Почему в 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,

Все, что сказал Невин... и это было исправлено в Белфасте.

Другие вопросы по тегам