你需要了解的 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 個新特性
使 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 新特性(附精彩评论)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用C语言实现有限状态自动机FSM
- 下一篇: C++17中那些值得关注的特性(上)