กลุ่มมาตรฐาน ISO ลงมติเอกฉันรับรอง C++20 เข้าเป็นมาตรฐาน โดยฟีเจอร์ทั้งหมดได้รับเห็นชอบแล้ว และจะตีพิมพ์เผยแพร่ตัวมาตรฐานเป็นเล่มสมบูรณ์ภายในปลายปีนี้ โดยฟีเจอร์สำคัญ 4 ประการของ C++20 ได้แก่
- Modulesสามารถคอมไพล์ซอร์สโค้ดและเรียกใช้งานจากไฟล์ไบนารีได้โดยตรง แทนที่การใช้ไฟล์ header แบบเดิมๆ ช่วยแยกอินเทอร์เฟซของโมดูลให้ชัดเจนขึ้น ที่สำคัญคือลดเวลาคอมไพล์ได้ 5 ถึง 10 เท่าตัว
- Conceptsฟีเจอร์ที่เสนอกันมาตั้งแต่ C++11 ใช้กำหนดคุณสมบัติของ Template ที่รับชนิดของตัวแปรเป็นอาร์กิวเมนต์ ว่าชนิดของตัวแปรที่ใส่มานั้นต้องมีคุณสมบัติตามที่กำหนดจึงคอมไพล์ผ่าน
- Rangesไลบรารีใหม่ที่อาศัยฟีเจอร์ Concepts มาจัดการข้อมูลประเภท collections
- Coroutinesฟังก์ชั่นที่สามารถหยุดรอผลได้ สำหรับการทำงานแบบ asynchronous
มีฟีเจอร์บางส่วนที่มีการพูดคุยกันแต่ถูกตัดออกจาก C++20 เช่น Contracts การตรวจสอบเงื่อนไขก่อนและหลังรันฟังก์ชั่น ถูกเลื่อนไป C++23 และยังมี standard module ที่ยังออกไม่ทัน C++20 ต้องรอ C++23 เช่นกัน
ตอนนี้ฟีเจอร์ยังอิมพลีเมนต์กันไม่ครบในคอมไพลเลอร์ส่วนมาก และคอมไพล์เลอร์ที่รองรับบางฟีเจอร์ก็อาจจะปิดไว้เป็นค่าเริ่มต้น ต้องกำหนด flag ตอนรันจึงใช้งานได้
ที่มา - The Register
Comments
ผมไม่ค่อยได้ยุ่งกับสายฮาร์ดแวร์เท่าไหร่ งานส่วนใหญ่เป็นพวกงานฐานข้อมูลจึงอยู่กับพวก java,pascal,php แต่ยอมรับว่าสาย C++ นี่หินสำหรับผมจริงๆ เคยเขียนครั้งเดียวตอนทำ exe รันโปรแกรมที่เขียนด้วย java อีกที่ นอกนั้นก็เข้ากรุไปละ
ผมว่า สายฮาร์ดแวร์ก็ไม่ค่อยได้ใช้ C++ นะครับ (เพิ่งมามีตอน Arduino นี่แหละมั้ง?)
แล้วก็ที่รู้สึกว่าหินก็อาจจะเพราะว่า ...
ล่ะมั้งครับ?
Coroutines น่าจะคล้าย nodeJS
ตีเผยแพร่ > ตีพิมพ์เผยแพร่