В документе P0122R (2016-02-12) Рабочей группы по эволюции библиотек (LEWG)
тип официально переименовывается array_view
вspan
:
Журнал изменений
Отличия от R0
- Изменено название предлагаемого типа с
array_view
наspan
после отзыва от LEWG на встрече Kona.
- [...]
Мы также можем прочитать:
Влияние на стандарт
Это предложение представляет собой чисто библиотечное расширение. Он не требует каких-либо изменений стандартных классов, функций или заголовков. Это было бы улучшено, если бы могло зависеть отbyte
типа и изменений поведения псевдонимов типов, предложенных в P0257. .
Однако - в случае принятия - может быть полезно перегрузить некоторые стандартные библиотечные функции для этого нового типа (примером может быть copy()
).
span
был реализован на стандартном C ++ (C ++ 11) и успешно используется в коммерческом инструменте статического анализа кода C ++, а также в коммерческом программном обеспечении для офисной работы. Эталонная реализация с открытым исходным кодом доступна по адресу https://github.com/Microsoft/GSL. .
В следующей главе эти документы представляют доступ только для чтения и чтения-записи ( изменяемый ):
Типы элементов и преобразования
span
должен быть настроен с использованием своего типа элемента с помощью параметра шаблона ValueType
, который должен быть полным типом объекта, а не абстрактным типом класса.
span
поддерживает доступ только для чтения или изменяемый доступ к инкапсулированной последовательности. Для доступа к данным только для чтения пользователь может объявить a span<const T>
, а для доступа к изменяемым данным будет использоваться span<T>
.
[...]
См. Также Обзор библиотеки поддержки рекомендаций:span<T>
от Мариуса Бансила (март 2016 г.), определяющего span
как:
Библиотека поддержки Руководство является реализация Microsoft некоторых типов и функций , описанных в Руководстве C ++ Ключевых
поддерживается Фондом Standard C ++ . Среди типов, предоставляемых GSL, span<T>
ранее известен как array_view<T>
.
span<T>
диапазон непрерывной памяти, не являющийся владельцем, рекомендуется использовать вместо указателей (и счетчика размера) или стандартных контейнеров (таких как std::vector
или std::array
).