Почему в std :: span отсутствует size_type? - PullRequest
8 голосов
/ 17 марта 2019

Я обновлял старый код, который использовал мой класс span для homebrew, до класса, более соответствующего C ++ 20 std::span, и я получаю ошибки компиляции, потому что std::span не имеет size_typeи вместо этого имеет index_type.Была огромная драма по поводу того, должен ли index_type быть подписан или нет, но зачем пропускать size_type?Это нарушает общий код, который ожидает, что контейнеры (или подобные объектам объекты) будут иметь size_type.

1 Ответ

3 голосов
/ 04 апреля 2019

Исходное предложение P1022R0 , когда оно еще называлось array_view, имело члена size_type. Он был удален в первой ревизии P1022R1 в рамках упрощения, так как в этом не было необходимости, поскольку size() и доступ к элементу были в то время с использованием подписанного index_type (он же ptrdiff_t) ). На собрании Kona 2019 это решение было изменено в P1227R2 путем изменения index_type на size_t.

...