Dokumen P0122R (2016-02-12) dari Library Evolution Working Group (LEWG)
secara resmi mengganti nama jenis array_view
menjadispan
:
Changelog
Perubahan dari R0
- Mengubah nama jenis yang diusulkan dari
array_view
ke span
berikut umpan balik dari LEWG pada pertemuan Kona.
- [...]
Kami juga bisa membaca:
Dampak pada Standar
Proposal ini adalah ekstensi perpustakaan murni. Itu tidak memerlukan perubahan apa pun pada kelas, fungsi, atau header standar. Ini akan ditingkatkan jika bisa bergantung pada byte
jenis dan perubahan pada perilaku aliasing tipe yang diusulkan di P0257 .
Namun - jika diadopsi - mungkin berguna untuk membebani beberapa fungsi library standar untuk tipe baru ini (contohnya copy()
).
span
telah diimplementasikan dalam standar C ++ (C ++ 11) dan berhasil digunakan dalam alat analisis statis komersial untuk kode C ++ serta perangkat lunak produktivitas kantor komersial. Implementasi referensi open source tersedia di https://github.com/Microsoft/GSL .
Di bab berikutnya, dokumen ini menyajikan akses baca-saja dan baca-tulis ( bisa berubah ):
Jenis dan konversi elemen
span
harus dikonfigurasi dengan jenis elemennya melalui parameter template ValueType
, yang diperlukan untuk menjadi jenis objek lengkap yang bukan jenis kelas abstrak.
span
mendukung akses hanya-baca atau yang dapat diubah ke urutan yang dienkapsulasi. Untuk mengakses data hanya-baca, pengguna dapat mendeklarasikan a span<const T>
, dan akses ke data yang dapat berubah akan menggunakan file span<T>
.
[...]
Lihat juga Panduan Review Library Dukungan:span<T>
dari Marius Bancila (maret 2016) yang didefinisikan span
sebagai:
The Pedoman Support Perpustakaan adalah implementasi Microsoft dari beberapa jenis dan fungsi yang dijelaskan dalam Pedoman C ++ Inti
dikelola oleh Standard C ++ Yayasan . Di antara tipe yang disediakan oleh GSL span<T>
sebelumnya dikenal sebagai array_view<T>
.
span<T>
adalah rentang memori bersebelahan non-memiliki yang disarankan untuk digunakan sebagai pengganti pointer (dan penghitung ukuran) atau wadah standar (seperti std::vector
atau std::array
).