กลุ่มมาตรฐาน 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

Topics:
from Blognone https://www.blognone.com/node/118309
via IFTTT

