Tài liệu P0122R (2016-02-12) từ Nhóm Công tác về Tiến hóa Thư viện (LEWG)
chính thức đổi tên loại array_view
thànhspan
:
Changelog
Những thay đổi từ R0
- Đã thay đổi tên của loại hình đang được đề xuất
array_view
thành span
sau phản hồi từ LEWG tại cuộc họp Kona.
- [...]
Chúng ta cũng có thể đọc:
Tác động đến tiêu chuẩn
Đề xuất này là một phần mở rộng thư viện thuần túy. Nó không yêu cầu bất kỳ thay đổi nào đối với các lớp, hàm hoặc tiêu đề chuẩn. Nó sẽ được tăng cường nếu có thể phụ thuộc vàobyte
loại và các thay đổi đối với hành vi răng cưa loại được đề xuất trong P0257 .
Tuy nhiên - nếu được thông qua - có thể hữu ích khi nạp chồng một số hàm thư viện chuẩn cho kiểu mới này (một ví dụ sẽ là copy()
).
span
đã được triển khai trong C ++ chuẩn (C ++ 11) và đang được sử dụng thành công trong một công cụ phân tích tĩnh thương mại cho mã C ++ cũng như phần mềm năng suất văn phòng thương mại. Nguồn mở, triển khai tham chiếu có sẵn tại https://github.com/Microsoft/GSL .
Trong chương tiếp theo, tài liệu này trình bày các quyền truy cập chỉ đọc và đọc ghi ( có thể thay đổi ):
Các loại phần tử và chuyển đổi
span
phải được cấu hình với kiểu phần tử của nó thông qua tham số khuôn mẫu ValueType
, được yêu cầu là kiểu đối tượng hoàn chỉnh không phải là kiểu lớp trừu tượng.
span
hỗ trợ truy cập chỉ đọc hoặc có thể thay đổi đối với trình tự mà nó đóng gói. Để truy cập dữ liệu chỉ đọc, người dùng có thể khai báo a span<const T>
và quyền truy cập vào dữ liệu có thể thay đổi sẽ sử dụng a span<T>
.
[...]
Xem thêm Bản Đánh giá Thư viện Hỗ trợ Nguyên tắc:span<T>
từ Marius Bancila (tháng 3 năm 2016) định nghĩa span
là:
Các Hướng dẫn Thư viện hỗ trợ là một thi Microsoft của một số các chủng loại và chức năng được mô tả trong Hướng dẫn Lõi C ++
được duy trì bởi các tiêu chuẩn C ++ Foundation . Trong số các loại do GSL cung cấp làspan<T>
trước đây được gọi là array_view<T>
.
span<T>
là phạm vi bộ nhớ liền kề không sở hữu được khuyến nghị sử dụng thay cho con trỏ (và bộ đếm kích thước) hoặc vùng chứa tiêu chuẩn (chẳng hạn như std::vector
hoặc std::array
).