Il documento P0122R (2016-02-12) del Library Evolution Working Group (LEWG)
rinomina ufficialmente il tipo array_view
inspan
:
Changelog
Modifiche da R0
- Cambiato il nome del tipo proposto da
array_view
al span
seguente feedback da LEWG alla riunione di Kona.
- [...]
Possiamo anche leggere:
Impatto sullo standard
Questa proposta è una pura estensione della libreria. Non richiede modifiche a classi, funzioni o intestazioni standard. Sarebbe migliorato se potesse dipendere dal byte
tipo e dalle modifiche al comportamento di aliasing del tipo proposto in P0257 .
Tuttavia, se adottato, potrebbe essere utile sovraccaricare alcune funzioni di libreria standard per questo nuovo tipo (un esempio sarebbe copy()
).
span
è stato implementato nello standard C ++ (C ++ 11) e viene utilizzato con successo all'interno di uno strumento di analisi statica commerciale per il codice C ++ e nel software di produttività per ufficio commerciale. Un'implementazione di riferimento open source è disponibile su https://github.com/Microsoft/GSL .
In un prossimo capitolo, questo documenti presenta la sola lettura e lettura-scrittura ( mutevole ) accessi:
Tipi di elementi e conversioni
span
deve essere configurato con il suo tipo di elemento tramite il parametro template ValueType
, che deve essere un tipo di oggetto completo che non è un tipo di classe astratta.
span
supporta l'accesso in sola lettura o modificabile alla sequenza che incapsula. Per accedere ai dati di sola lettura, l'utente può dichiarare a span<const T>
, e l'accesso ai dati modificabili userebbe a span<T>
.
[...]
Vedere anche la revisione della libreria di supporto delle linee guida:span<T>
da Marius Bancila (marzo 2016) che definisce span
come:
La libreria di supporto delle linee guida è un'implementazione Microsoft di alcuni dei tipi e delle funzioni descritti nelle linee guida di base di C ++
gestite dalla Fondazione C ++ standard . Tra i tipi forniti dalla GSL è span<T>
precedentemente noto come array_view<T>
.
span<T>
è un intervallo non di proprietà di memoria contigua che si consiglia di utilizzare al posto dei puntatori (e del contatore delle dimensioni) o dei contenitori standard (come std::vector
o std::array
).