首頁 >後端開發 >C++ >C 17 中引入了哪些關鍵語言和函式庫功能?

C 17 中引入了哪些關鍵語言和函式庫功能?

Linda Hamilton
Linda Hamilton原創
2024-12-13 16:33:13212瀏覽

What are the Key Language and Library Features Introduced in C  17?

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及相關特徵的介紹

檔案系統庫:

  • 檔案系統技術規範的實作(TS)

新演算法:

  • 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn