今天合併到 LLVM 17 Git 現在可以識別-std=c++23,而不僅僅是-std=c++2b 用於 Clang 編譯器,因為 C++23 在技術上已被認為是完整的。
隨著 ISO C++ 委員會投票決定 C++23 標準已達到其技術完整狀態,LLVM 開發人員已將他們的 C++2b 標準目標重命名為 C++23。這類似於過去 C++20 被稱為 C++2a,直到語言更新準備就緒並且符合之前的 ISO C++ 標準。
使用-std=c++23 而不是-std=c++2b 是通過 這次提交。
C++23 標準引入了新功能,例如基於 Boost 的 stracktrace 的堆棧跟踪庫、有條件地借用範圍、用於與 C 原子互操作的 stdatomic.h 標頭、std::byteswap、std::expected,對 UTF-8 源文件的支持現在被認為是強制性的,如果 consteval,lambdas 上的屬性,以及許多其他更改。可以通過 cppreference.com 找到方便的外觀和當前的編譯器支持。
向前邁進,今天還發布了 徵求意見 LLVM 直接將其 C++26 支持稱為“C++26”,而無需先將其稱為 C+ +2c。如果立即添加-std=c++26,希望在過渡期間減少錯誤。