跳至內容

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::bitsetstd::string_view 介面對接。
  • <cmath><complex> 提供更多的 constexpr 支援。
  • 在比率(ratios)中添加新的 2022 年 SI 字首:std::quectostd::rontostd::ronnastd::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_satstd::div_sat 等。

注釋

[編輯]
  1. ^ Working Draft, Standard for Programming Language C++ (PDF). Open Standards. ISO/IEC. 2024-04-16. 
  2. ^ P3176R1: 牛津可变逗号. eisenwave.github.io. [2024-12-09]. 
  3. ^ 契约断言(自 C++26 起)- cppreference.com. en.cppreference.com. [2025-03-09]. 

另見

[編輯]