Dans plusieurs conférences récentes, j'ai entendu Bjarne Stroustrup et d'autres mentionner de nouvelles directives de codage pour C ++ et certains types les prenant en charge.
Plus précisément, je me souviens de l'exemple de span<T>
au lieu de en (T* p, int n)
tant que paramètre d'une fonction (à environ 32h00 dans la discussion); mais je me souviens aussi de la suggestion à utiliser array_view<T>
. S'agit-il de deux alternatives mais du même concept? Ou est-ce que je dérange les choses et qu'elles ne sont pas vraiment liées?
Je n'arrive pas à trouver une définition faisant autorité de ce qu'ils sont tous les deux censés être.
array_view
été renomméspan
.array_view
flottant.Réponses:
Nous avons discuté avec des membres du groupe de travail des bibliothèques du comité des normes . Ils voulaient que ce
array_view
qu'ils essayent d'entrer dans la norme soit en lecture seule. Pour les directives de base, nous avions besoin d'une abstraction en lecture et en écriture. Pour éviter un conflit entre les normes (potentielles) et la bibliothèque de support des directives (GSL), nous avons renommé notre (lecture et écriture)array_view
enspan
: https://github.com/microsoft/gsl .la source
const array_view<T>
plusarray view<const T>
n'était pas satisfaisant?span
éviterait à beaucoup de programmeurs de faire des erreurs stupides. Je pense que la communication de ces nouveaux changements pourrait se faire de manière plus claire. Je me demande juste - ne serait-ce pas quelque chose qui pourrait être résolu aussi clairement avec un itérateur à accès aléatoire régulier? Le type a-t-il été ajouté uniquement pour plus de clarté?Dans les CppCoreGuidlines L'original a
array_view
été renomméspan
.Voir: https://github.com/isocpp/CppCoreGuidelines/pull/377
Il est décrit ainsi:
la source
Le document P0122R (2016-02-12) du Library Evolution Working Group (LEWG)
renomme officiellement le type
array_view
enspan
:On peut également lire:
Dans un chapitre suivant, ce document présente les accès en lecture seule et en lecture-écriture ( mutable ):
Voir aussi le Guidelines Support Library Review:
span<T>
de Marius Bancila (mars 2016) définissantspan
comme:la source