El documento P0122R (2016-02-12) del Library Evolution Working Group (LEWG)
cambia oficialmente el nombre del tipo array_viewaspan :
Registro de cambios
Cambios de R0
- Se cambió el nombre del tipo propuesto de
array_view a spanseguir los comentarios de LEWG en la reunión de Kona.
- [...]
También podemos leer:
Impacto en el estándar
Esta propuesta es una extensión de biblioteca pura. No requiere ningún cambio en las clases, funciones o encabezados estándar. Se mejoraría si pudiera depender del bytetipo y los cambios en el comportamiento de alias de tipo propuesto en P0257 .
Sin embargo, si se adopta, puede ser útil sobrecargar algunas funciones de biblioteca estándar para este nuevo tipo (un ejemplo sería copy() ).
spanse ha implementado en C ++ estándar (C ++ 11) y se está utilizando con éxito dentro de una herramienta comercial de análisis estático para código C ++, así como software de productividad de oficina comercial. Una implementación de referencia de código abierto está disponible en https://github.com/Microsoft/GSL .
En un capítulo siguiente, este documento presenta los accesos de solo lectura y lectura-escritura ( mutables ):
Tipos de elementos y conversiones
spandebe configurarse con su tipo de elemento a través del parámetro de plantilla ValueType, que debe ser un tipo de objeto completo que no sea un tipo de clase abstracta.
spanadmite acceso de solo lectura o mutable a la secuencia que encapsula. Para acceder a datos de solo lectura, el usuario puede declarar a span<const T>, y el acceso a datos mutables usaría a span<T>.
[...]
Consulte también la Revisión de la biblioteca de apoyo aspan<T> las directrices: de Marius Bancila (marzo de 2016) que se define spancomo:
La Biblioteca de soporte de pautas es una implementación de Microsoft de algunos de los tipos y funciones descritos en las Pautas principales de C ++
mantenidas por Standard C ++ Foundation . Entre los tipos proporcionados por GSL se span<T>conocía anteriormente como array_view<T>.
span<T>es un rango no propietario de memoria contigua que se recomienda usar en lugar de punteros (y contador de tamaño) o contenedores estándar (como std::vectoro std::array).