Dokument P0122R (12.02.2016) z Library Evolution Working Group (LEWG)
oficjalnie zmienia nazwę typu array_view
naspan
:
Changelog
Zmiany w stosunku do R0
- Zmieniono nazwę proponowanego typu z
array_view
na span
następującą informację zwrotną od LEWG na spotkaniu Kona.
- […]
Możemy również przeczytać:
Wpływ na standard
Ta propozycja jest czystym rozszerzeniem biblioteki. Nie wymaga żadnych zmian w standardowych klasach, funkcjach ani nagłówkach. Byłoby to ulepszone, gdyby mogło zależeć od byte
typu i zmian w zachowaniu aliasingu typu zaproponowanych w P0257 .
Jednak - jeśli zostanie przyjęty - może być przydatne przeładowanie niektórych standardowych funkcji bibliotecznych dla tego nowego typu (przykładem może być copy()
).
span
został zaimplementowany w standardowym C ++ (C ++ 11) i jest z powodzeniem używany w komercyjnym narzędziu do analizy statycznej kodu C ++, a także w oprogramowaniu biurowym. Implementacja referencyjna typu open source jest dostępna pod adresem https://github.com/Microsoft/GSL .
W następnym rozdziale ten dokument przedstawia dostęp tylko do odczytu i do odczytu i zapisu ( zmienny ):
Typy i konwersje elementów
span
musi być skonfigurowany z typem elementu za pomocą parametru template ValueType
, który musi być kompletnym typem obiektu, który nie jest abstrakcyjnym typem klasy.
span
obsługuje dostęp tylko do odczytu lub zmienny dostęp do sekwencji, którą zawiera. Aby uzyskać dostęp do danych tylko do odczytu, użytkownik może zadeklarować a span<const T>
, a dostęp do danych modyfikowalnych używałby pliku span<T>
.
[…]
Zobacz także Guidelines Support Library Review:span<T>
Marius Bancila (marzec 2016) definiując span
jako:
Wytyczne Biblioteka Pomoc jest wdrożenie Microsoft niektórych typów i funkcji opisanych w ++ C podstawowych wytycznych
prowadzonego przez ++ Fundacji standard C . Wśród typów udostępnianych przez GSL jest span<T>
wcześniej znany jako array_view<T>
.
span<T>
to nie będący właścicielem zakres ciągłej pamięci, który zaleca się używać zamiast wskaźników (i licznika rozmiaru) lub standardowych kontenerów (takich jak std::vector
lub std::array
).