Le document P0122R (2016-02-12) du Library Evolution Working Group (LEWG)
renomme officiellement le type array_viewenspan :
Changelog
Changements depuis R0
- Changement du nom du type proposé de
array_viewen spansuivant les commentaires du LEWG à la réunion de Kona.
- [...]
On peut également lire:
Impact sur la norme
Cette proposition est une pure extension de bibliothèque. Il ne nécessite aucune modification des classes, fonctions ou en-têtes standard. Il serait amélioré si cela pouvait dépendre du bytetype et des changements de comportement d'alias de type proposés dans P0257 .
Cependant, s'il est adopté, il peut être utile de surcharger certaines fonctions de bibliothèque standard pour ce nouveau type (un exemple serait copy()).
spana été implémenté en C ++ standard (C ++ 11) et est utilisé avec succès dans un outil commercial d'analyse statique pour le code C ++ ainsi que dans un logiciel de productivité de bureau commercial. Une implémentation de référence open source est disponible à l' adresse https://github.com/Microsoft/GSL .
Dans un chapitre suivant, ce document présente les accès en lecture seule et en lecture-écriture ( mutable ):
Types d'élément et conversions
spandoit être configuré avec son type d'élément via le paramètre template ValueType, qui doit être un type d'objet complet qui n'est pas un type de classe abstraite.
spanprend en charge l'accès en lecture seule ou modifiable à la séquence qu'il encapsule. Pour accéder aux données en lecture seule, l'utilisateur peut déclarer a span<const T>, et l'accès aux données mutables utiliserait un span<T>.
[...]
Voir aussi le Guidelines Support Library Review:span<T> de Marius Bancila (mars 2016) définissant spancomme:
La bibliothèque de prise en charge des lignes directrices est une implémentation Microsoft de certains des types et fonctions décrits dans les lignes directrices de base C ++
maintenues par la Standard C ++ Foundation . Parmi les types fournis par le GSL est span<T>anciennement connu sous le nom de array_view<T>.
span<T>est une plage non propriétaire de mémoire contiguë dont l'utilisation est recommandée à la place des pointeurs (et compteur de taille) ou des conteneurs standard (tels que std::vectorou std::array).