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


什么是 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM