Почему в std::span отсутствует size_type?
Я обновлял старый код, который использовал мой класс span для homebrew, до того, который больше соответствует C++20 std::span
и я получаю ошибки компиляции, потому что std::span
не имеет size_type
и вместо этого имеет index_type
, Там была огромная драма из-за index_type
должен быть подписан или нет, но зачем пропускать size_type
? Это нарушает общий код, который ожидает, что контейнеры (или подобные объектам контейнеры) будут иметь size_type
,
1 ответ
Оригинальное предложение P1022R0, когда оно еще называлось array_view
, имел size_type
член. Он был удален в первой ревизии P1022R1 как часть упрощения, так как он не был необходим, потому что size()
и доступ к элементу были в то время, используя подписанный index_type
(ака ptrdiff_t
). На собрании Kona 2019 это решение было изменено в P1227R2 путем изменения index_type
быть size_t
,