C++20 ผ่านเป็นมาตรฐาน ISO เพิ่มฟีเจอร์ Module ลดเวลาคอมไพล์ 10 เท่า, Coroutine รองรับ asynchronous

by lew
7 September 2020 - 18:07

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

Blognone Jobs Premium