Em várias apresentações em conferências recentes, ouvi Bjarne Stroustrup e outros mencionarem novas diretrizes de codificação para C ++ e alguns tipos que as suportam.
Especificamente, lembro -span<T>
(T* p, int n)
me do exemplo de em vez de como um parâmetro para uma função (na hora cerca de 32:00 na conversa); mas também me lembro da sugestão de usar array_view<T>
. São duas alternativas, mas o mesmo conceito? Ou estou confundindo as coisas e elas não estão tão relacionadas?
Não consigo encontrar nenhuma definição oficial do que eles deveriam tratar.
array_view
foi renomeado paraspan
.array_view
flutuando por aí.Respostas:
Conversamos com pessoas do grupo de trabalho da biblioteca no comitê de padrões . Eles queriam
array_view
que o padrão fosse somente leitura. Para as diretrizes básicas, precisávamos de uma abstração que fosse lida e escrita. Para evitar um conflito entre os padrões (potenciais) e a biblioteca de suporte às diretrizes (GSL), renomeamos nosso (leitura e gravação)array_view
paraspan
: https://github.com/microsoft/gsl .fonte
const array_view<T>
maisarray view<const T>
não foi satisfatório?span
evitaria que muitos programadores cometessem erros bobos. Eu acho que comunicar essas novas mudanças poderia ser feito de uma forma mais clara. Estou apenas pensando - isso não seria algo que poderia ser resolvido claramente com um iterador regular de acesso aleatório? O tipo foi adicionado apenas para maior clareza?No CppCoreGuidlines O original
array_view
foi renomeado paraspan
.Veja: https://github.com/isocpp/CppCoreGuidelines/pull/377
É descrito assim:
fonte
O documento P0122R (2016-02-12) do Library Evolution Working Group (LEWG)
renomeia oficialmente o tipo
array_view
paraspan
:Também podemos ler:
Em um próximo capítulo, este documento apresenta os acessos somente leitura e leitura / gravação ( mutáveis ):
Consulte também a Revisão da Biblioteca de Apoio
span<T>
às Diretrizes: de Marius Bancila (março de 2016) definindospan
como:fonte