O documento P0122R (2016-02-12) do Library Evolution Working Group (LEWG)
renomeia oficialmente o tipo array_viewparaspan :
Changelog
Mudanças de R0
- Alterado o nome do tipo proposto
array_viewpara spanapós o feedback do LEWG na reunião de Kona.
- [...]
Também podemos ler:
Impacto no padrão
Esta proposta é uma extensão de biblioteca pura. Não requer nenhuma alteração nas classes, funções ou cabeçalhos padrão. Seria melhorado se pudesse depender do bytetipo e das mudanças no comportamento de aliasing de tipo proposto em P0257 .
No entanto - se adotado - pode ser útil sobrecarregar algumas funções da biblioteca padrão para este novo tipo (um exemplo seria copy()).
spanfoi implementado em C ++ padrão (C ++ 11) e está sendo usado com sucesso em uma ferramenta de análise estática comercial para código C ++, bem como em software comercial de produtividade de escritório. Uma implementação de referência de código aberto está disponível em https://github.com/Microsoft/GSL .
Em um próximo capítulo, este documento apresenta os acessos somente leitura e leitura / gravação ( mutáveis ):
Tipos de elemento e conversões
spandeve ser configurado com seu tipo de elemento por meio do parâmetro de modelo ValueType, que é necessário para ser um tipo de objeto completo que não é um tipo de classe abstrata.
spansuporta acesso somente leitura ou mutável à sequência que encapsula. Para acessar dados somente leitura, o usuário pode declarar a span<const T>, e o acesso aos dados mutáveis usaria a span<T>.
[...]
Consulte também a Revisão da Biblioteca de Apoiospan<T> às Diretrizes: de Marius Bancila (março de 2016) definindo spancomo:
A Biblioteca de Suporte de Diretrizes é uma implementação da Microsoft de alguns dos tipos e funções descritos nas Diretrizes Básicas C ++
mantidas pela Standard C ++ Foundation . Entre os tipos fornecidos pelo GSL é span<T>anteriormente conhecido como array_view<T>.
span<T>é um intervalo não proprietário de memória contígua recomendado para ser usado em vez de ponteiros (e contador de tamanho) ou contêineres padrão (como std::vectorou std::array).