El documento P0122R (2016-02-12) del Library Evolution Working Group (LEWG)
cambia oficialmente el nombre del tipo array_view
aspan
:
Registro de cambios
Cambios de R0
- Se cambió el nombre del tipo propuesto de
array_view
a span
seguir 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 byte
tipo 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()
).
span
se 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
span
debe 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.
span
admite 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 span
como:
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::vector
o std::array
).