Open AndreyG opened 2 years ago
Идея очень хорошая, но просто удалить требование нельзя - многие методы span используют арифметику указателей.
@AndreyG в proposal вставьте те же волшебные слова что у vector https://eel.is/c++draft/vector#overview-4 и можно отправлять в комитет.
Идея очень хорошая, но просто удалить требование нельзя - многие методы span используют арифметику указателей.
Да, у меня об этом есть и в тексте issue и в черновике proposal-а.
@apolukhin куда именно Вы предлагаете вставить волшебные слова? Я колеблюсь между двумя вариантами.
Я бы для каждого метода прописал
Собственно, идея в заголовке. Черновик (очень-очень сырой) proposal-а содержит мотивацию, так что просто повторю ее здесь. Сейчас (в C++20) такой естественный код не валиден:
хотя с точки зрения здравого смысла
span<Element>
должен быть эквивалентенpair<Element*, size_t>
, а значит фундаментальной причины, запрещать код выше, не существует.При этом понятно, что для большинства методов
span
-а нужно чтобыElementType
был complete. Это не проблема, прецедент уже есть --vector
разрешает инстанцировать класс incomplete типом, но требует, чтобы тип элемента стал complete перед инстанциацией всех member-овvector
-а:Для
span
-а хочется ослабить требования до почти таких же, но copy/move-операции дляspan
-а (они тривиальные) необходимо также разрешить даже когда тип элемента incomplete.