你需要了解的 C++ 17 Top 19 新特性

栏目: C++ · 发布时间: 8年前

内容简介:你需要了解的 C++ 17 Top 19 新特性

你需要了解的 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/


以上所述就是小编给大家介绍的《你需要了解的 C++ 17 Top 19 新特性》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Hit Refresh

Hit Refresh

Satya Nadella、Greg Shaw / HarperBusiness / 2017-9-26 / USD 20.37

Hit Refresh is about individual change, about the transformation happening inside of Microsoft and the technology that will soon impact all of our lives—the arrival of the most exciting and disruptive......一起来看看 《Hit Refresh》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试