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].
另見
[編輯]| 這是一篇關於電腦程式語言的小作品。您可以透過編輯或修訂擴充其內容。 |