เอกสาร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)