Документ P0122R (12.02.2016) від Робочої групи з розвитку бібліотек (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>
, а для доступу до змінних даних використовуватиме a span<T>
.
[...]
Див. Також Огляд бібліотеки підтримки:span<T>
від Маріуса Банчіли (березень 2016 р.), Що визначає span
як:
Бібліотека підтримки Керівництво є реалізація Microsoft деяких типів і функцій , описаних в Керівництві C ++ Ключових
підтримується Фондом Standard C ++ . Серед типів, наданих GSL, span<T>
раніше відомий як array_view<T>
.
span<T>
- це невласний діапазон суміжної пам'яті, який рекомендується використовувати замість покажчиків (та лічильника розміру) або стандартних контейнерів (таких як std::vector
або std::array
).