C 17 中的新功能
C 17 的功能開發完成後,引入了一些新的語言功能和庫添加:
語言功能:
-
改良的範本用法:
-
Lambda增強:
- constexpr lambda簡介
- 捕獲能力這在lambdas
-
屬性:
- 引入新屬性,如[ [fallthrough]]、[[nodiscard] ],和[[maybe_unused]]
-
語法清理:
- 內聯變量
- 簡化的命名空間語法:命名空間A::B
- 無拋出表達式: throw() 和noexcept(true)
-
控制流改進:
- 用於解包值的結構化綁定
-
if (init;condition) 和 switch (init;condition) 用於增強流程control- 基於範圍的廣義 for 循環
- 用於條件編譯的 if constexpr
-
其他值得注意的功能:
- 十六進位浮點數文字
- 過度對齊資料的動態記憶體分配
- 保證複製省略
- 表達式的固定計算順序
- 枚舉的直接列表初始化
- 轉發進度保證線程
庫添加:
數據類型:
- std ::代表不同值的變體types
- std::Optional 用於表示可選值
- std::any 用於表示任何類型的值,包括不可複製的類型
- std::string_view 用於高效處理字串引用
- std::byte用於表示沒有類型的資料資訊
可呼叫處理:
- std::invoke 用於通用可呼叫
- std::apply用於基於元組用於建構的可呼叫呼叫
- std::make_from_tuple元組中的物件
- is_invocable及相關特徵的介紹
檔案系統庫:
新演算法:
- for_each_n、reduce、transform_reduce等等
螺紋加工增強功能:
- 引入std::shared_mutex 以實現更有效率的多執行緒存取
- 原子保證與硬體幹擾大小偵測
庫基礎 TS 新增內容:
- 搜索算法(alg.search)
- 多態分配器(pmr)
容器改進:
- try_emplace 和insert_or_assign用於高效容器插入
- 映射、集合和無序容器的拼接
- 字串的非常量data()存取
智慧指標:
- 修復和調整unique_ptr
- 引入weak_from_this來管理共享指針
Misc:
- 使用C11代替C99為標準庫
- 為未來的標準庫保留std[0-9]命名空間
- 各種實用函數(destroy、uninitialized_***)
- 特殊函數(destroy、uninitialized_***)
- 特殊數學函數的暴露
- std::clamp、std::gcd 和的介紹std::lcm
- 異常處理改進,包括std::uncaught_exceptions
- std::as_const、std::bool_constant 和各種模板實用程式
- 改進的std::chrono庫
- 布林運算子的介紹(std::conjunction, std::disjunction, std::negation)
std 中 noexcept使用的規則
已棄用的功能:
刪除一些C 函式庫、
、result_of 和其他以上是C 17 中引入了哪些關鍵語言和函式庫功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!