C++26
外觀
C++26是繼C++23之後正在修訂中的C++程式語言開放標準草案,其正式版本預計將於2026年發布。目前已發布的修訂草案為N4981。[1]
特性
[編輯]已被C++26接受的新特性包括:
語言特性
[編輯]- 未求值字串(Unevaluated strings)。
- 將
@、$和`添加到基本字元集。 - 支援從
void*進行constexpr轉換。 - 使用者自訂的
static_assert訊息。 - 無命名的占位變數(Placeholder variables)。
- 包索引(Pack indexing)。
- 結構化繫結(structured bindings)的屬性(Attributes)。
- 未初始化讀取的錯誤行為。
= delete("reason");(可以為刪除函式提供刪除原因)。- 可變參數友元(Variadic friends)。
constexpr放置new表達式。- 將結構化繫結聲明作為條件使用。
- 摺疊表達式(fold expressions)中約束(constraints)的排序。
- 刪除指向不完整類型(incomplete type)指標應該是格式錯誤(ill-formed)的。
- 結構化繫結可以引入參數包(pack)。
- 常數求值(constant-evaluation)中允許丟擲異常。
constexpr結構化繫結與對constexpr變數的參照。- 牛津可變逗號(Oxford variadic comma),即「棄用前無逗號的省略號參數。語法
(int...)與 C 語言不相容,對 C++ 也有害,可以很容易用(int, ...)替代。」[2] - 移除棄用的陣列比較。
- 契約[3]
標準庫特性
[編輯]- 為
std::chrono值類增加雜湊支援。 std::is_within_lifetime類型檢測。- 檔案流(file streams)中的原生控制代碼(Native handles)支援。
- 將字串流(string streams)與
std::string_view介面對接。 - 將
std::bitset與std::string_view介面對接。 <cmath>與<complex>提供更多的constexpr支援。- 在比率(ratios)中添加新的 2022 年 SI 字首:
std::quecto、std::ronto、std::ronna和std::quetta。 std::copyable_function。std::submdspan()。<debugging>:除錯支援模組。<linalg>:基於 BLAS 的自由函式線性代數介面。- 向
std::complex添加元組協定(tuple protocol)。 views::concat。- 字串與字串視圖的拼接。
std::ranges::generate_random。- 使用
std::println()列印空白行。 std::formatter<std::filesystem::path>格式化器。- 支援飽和算術(Saturation arithmetic),包括
std::add_sat、std::div_sat等。
注釋
[編輯]- ^ Working Draft, Standard for Programming Language C++ (PDF). Open Standards. ISO/IEC. 2024-04-16.
- ^ P3176R1: 牛津可变逗号. eisenwave.github.io. [2024-12-09].
- ^ 契约断言(自 C++26 起)- cppreference.com. en.cppreference.com. [2025-03-09].
另見
[編輯]| 這是一篇關於電腦程式語言的小作品。您可以透過編輯或修訂擴充其內容。 |