1. 程式人生 > >你需要了解的 C++ 17 Top 19 新特性(附精彩評論)

你需要了解的 C++ 17 Top 19 新特性(附精彩評論)

turn ane res 標準屬性 padding about ref list 5.0

什麽是 C++17?

C++17(或 C++1z)是繼 C++14 之後 C++ 編程語言 ISO/IEC 標準的下一次修訂的非正式名稱。C++17 現在功能已齊全,正在成為國際標準的路上。它的規範已於 2017 年 3 月達到國際標準草案的階段。

C++17 標準化圖表

年份 C++ 標準 正式名稱
1998 ISO/IEC 14882:1998 C++98
2003 ISO/IEC 14882:2003 C++03
2011 ISO/IEC 14882:2011 C++11
2014 ISO/IEC 14882:2014 C++14
2017 Yet to be determined C++17
2020 Yet to be determined C++20

C++17 的 19 個新特性

  1. 使 static_assert 的文本信息可選

  2. 刪除 trigraphs

  3. 在模板參數中允許使用 typename(作為替代類)

  4. 來自 braced-init-list 的新規則用於自動推導

  5. 嵌套命名空間的定義,例如:使用 namespace X::Y { … } 代替 namespace X { namespace Y { … }}

  6. 允許命名空間和枚舉器的屬性

  7. 新的標準屬性:[[fallthrough]], [[maybe_unused]] 和 [[nodiscard]]

  8. UTF-8 字符文字

  9. 對所有非類型模板參數進行常量評估

  10. Fold 表達式,用於可變的模板

  11. A compile-time static if with the form if constexpr(expression)

  12. 結構化的綁定聲明,現在允許 auto [a, b] = getTwoReturnValues();

  13. if 和 switch 語句中的初始化器

  14. 在某些情況下,確保通過編譯器進行 copy elision(Guaranteed copy elision by compilers in some cases)

  15. 一些用於對齊內存分配的擴展

  16. 構造函數的模板推導,允許使用 std::pair(5.0, false) 代替 std::pair<double,bool>(5.0, false)

  17. 內聯變量,允許在頭文件中定義變量

  18. __has_include,允許由預處理程序指令檢查頭文件的可用性

  19. __cplusplus 的值更改為 201703L

來自:http://www.masalaanews.com/

http://www.oschina.net/news/85129/top-19-new-features-of-c17-you-need-to-know

你需要了解的 C++ 17 Top 19 新特性(附精彩評論)