เอกสารP0122R (2016-02-12) จากLibrary Evolution Working Group (LEWG)
เปลี่ยนชื่อประเภทarray_view
เป็นspan
:
บันทึกการเปลี่ยนแปลง
การเปลี่ยนแปลงจาก R0
- เปลี่ยนชื่อประเภทที่เสนอจาก
array_view
เป็นspan
ตามคำติชมจาก LEWG ในการประชุม Kona
- [... ]
เรายังสามารถอ่าน:
ผลกระทบต่อมาตรฐาน
ข้อเสนอนี้เป็นส่วนขยายของห้องสมุดล้วนๆ ไม่จำเป็นต้องมีการเปลี่ยนแปลงใด ๆ กับคลาสฟังก์ชันหรือส่วนหัวมาตรฐาน จะได้รับการปรับปรุงหากสามารถขึ้นอยู่กับbyte
ประเภทและการเปลี่ยนแปลงพฤติกรรมการใช้นามแฝงที่เสนอในP0257 P0257
อย่างไรก็ตาม - หากนำมาใช้ - อาจเป็นประโยชน์ในการโอเวอร์โหลดฟังก์ชันไลบรารีมาตรฐานบางอย่างสำหรับประเภทใหม่นี้ (ตัวอย่างเช่นcopy()
)
span
ได้รับการใช้งานในมาตรฐาน C ++ (C ++ 11) และถูกนำมาใช้อย่างประสบความสำเร็จภายในเครื่องมือวิเคราะห์แบบคงที่เชิงพาณิชย์สำหรับรหัส C ++ รวมถึงซอฟต์แวร์เพิ่มประสิทธิภาพในสำนักงานเชิงพาณิชย์ แหล่งที่มาเปิดดำเนินการอ้างอิงที่มีอยู่ในhttps://github.com/Microsoft/GSL
ในบทถัดไปเอกสารนี้จะนำเสนอการเข้าถึงแบบอ่านอย่างเดียวและแบบอ่าน - เขียน ( เปลี่ยนแปลงได้ ):
ประเภทองค์ประกอบและการแปลง
span
ต้องกำหนดค่าด้วยประเภทองค์ประกอบผ่านพารามิเตอร์ template ValueType
ซึ่งจำเป็นต้องเป็นประเภทวัตถุที่สมบูรณ์ที่ไม่ใช่ประเภทคลาสนามธรรม
span
รองรับการเข้าถึงแบบอ่านอย่างเดียวหรือแบบเปลี่ยนได้สำหรับลำดับที่ห่อหุ้ม ในการเข้าถึงข้อมูลแบบอ่านอย่างเดียวผู้ใช้สามารถประกาศ a span<const T>
และการเข้าถึงข้อมูลที่เปลี่ยนแปลงได้จะใช้ไฟล์span<T>
.
[... ]
ดูคู่มือการสนับสนุนการทบทวนห้องสมุด:span<T>
จาก Marius Bancila (มีนาคม 2016) กำหนดspan
เป็น:
ห้องสมุดสนับสนุนแนวทางคือการดำเนินงานที่ไมโครซอฟท์ของบางประเภทและฟังก์ชั่นที่อธิบายไว้ในc ++ แนวทางหลักของ
การเก็บรักษาโดยc ++ มาตรฐานมูลนิธิ ในบรรดาประเภทที่ GSL มีให้span<T>
เดิมเรียกว่าarray_view<T>
.
span<T>
เป็นช่วงหน่วยความจำที่ไม่ได้เป็นเจ้าของซึ่งแนะนำให้ใช้แทนพอยน์เตอร์ (และตัวนับขนาด) หรือคอนเทนเนอร์มาตรฐาน (เช่นstd::vector
หรือstd::array
)