O documento P0122R (2016-02-12) do Library Evolution Working Group (LEWG)
renomeia oficialmente o tipo array_view
paraspan
:
Changelog
Mudanças de R0
- Alterado o nome do tipo proposto
array_view
para span
apó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 byte
tipo 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()
).
span
foi 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
span
deve 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.
span
suporta 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 span
como:
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::vector
ou std::array
).