標籤:c++11 use 構造 rmi tee target ace expr 命名
什麼是 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 個新特性
使 static_assert 的文本資訊可選
刪除 trigraphs
在模板參數中允許使用 typename(作為替代類)
來自 braced-init-list 的新規則用於自動推導
嵌套命名空間的定義,例如:使用 namespace X::Y { … } 代替 namespace X { namespace Y { … }}
允許命名空間和列舉程式的屬性
新的標準屬性:[[fallthrough]], [[maybe_unused]] 和 [[nodiscard]]
UTF-8 字元文字
對所有非類型模板參數進行常量評估
Fold 運算式,用於可變的模板
A compile-time static if with the form if constexpr(expression)
結構化的綁定聲明,現在允許 auto [a, b] = getTwoReturnValues();
if 和 switch 語句中的初始化器
在某些情況下,確保通過編譯器進行 copy elision(Guaranteed copy elision by compilers in some cases)
一些用於對齊記憶體配置的擴充
建構函式的模板推導,允許使用 std::pair(5.0, false) 代替 std::pair<double,bool>(5.0, false)
內聯變數,允許在標頭檔中定義變數
__has_include,允許由預先處理程式指令檢查標頭檔的可用性
__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 新特性(附精彩評論)