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

时间: 2024-12-03 14:14:04

你需要了解的 C++ 17 Top 19 新特性(附精彩评论)的相关文章

西安电子地图下载 来自谷歌电子地图库 地图展示15、17、19级

西安电子地图下载 来自谷歌电子地图库 地图展示15.17.19级 一般来说商业用图几乎相同就是17级左右,提供的下载全然满足大多数人浏览使用,假设用于旅行外出当然级数越高越好,假设是驴行,那就更有必要下载完整的地图以作不时之需. 百度网盘下载资源:http://pan.baidu.com/s/1gdteIhP 谷歌电子地图下载器:http://www.arceyes.com/download/sggm.rar 百度电子地图下载器:http://www.arceyes.com/download/s

杭州电子地图 高清15、17、19级别 谷歌电子地图资源

杭州电子地图.下载与谷歌电子地图库.最高级别19级.商用级别17级别.预览图为15.17.19级别,百度网盘打开下载,假设须要很多其它电子地图请下载专业谷歌电子地图下载器. 百度网盘下载资源:http://pan.baidu.com/s/1eQu2vVc 谷歌电子地图下载器:http://www.arceyes.com/download/sggm.rar 百度电子地图下载器:http://www.arceyes.com/download/sgbdm.rar 万能地图下载器,下载包含电子地图.卫星

[Android 新特性] Android 4.3 Top 5新功能

直播会上,Android 4.3不像Nexus 7那么Sexy,也没有Chromecast电视棒那样惹人注目,但它有许多强悍的新特点,下面来看看Top 5. 1. 权限配置 支持在一台终端设备上有多个帐号登录,但有内容限制(Restricted Profiles),比如通过内容权限设置,可以阻止你的小孩从Google Play里下载付费游戏或app. 2. OpenGL ES 3.0 全新的OpenGL ES 3.0,对用户来说,将为你的图片.视频观看.游戏带来高质量的图像品质体验.对开发者来说

解读ASP.NET 5 &amp; MVC6系列(17):MVC中的其他新特性

原文:解读ASP.NET 5 & MVC6系列(17):MVC中的其他新特性 (GlobalImport全局导入功能) 默认新建立的MVC程序中,在Views目录下,新增加了一个_GlobalImport.cshtml文件和_ViewStart.cshtml平级,该文件的功能类似于之前Views目录下的web.config文件,之前我们在该文件中经常设置全局导入的命名空间,以避免在每个view文件中重复使用@using xx.xx语句.默认的示例如下: @using BookStore @usi

Oracle GoldenGate 19.1新特性

1.GoldenGate 19.1 新特性概览a.支持Oracle数据库19.1 长期支持发布版本.集成Oracle GoldenGate 12.3版的最终补丁集更新.b.微服务的安全性和可管理性增强与密钥管理系统集成,支持DMZ环境.Defaults changed to TLS1.2, Digest Auth, Strong Password VerifierManaged profiles for AutoStart, AutoRestart, and Key Management.c.性

旧文-ubuntu linux 8.04下修改mac地址-2008年12月17日 19:33

因公司内IP与MAC绑定,且不能人人上网,只能通过更改MAC来上网.经搜索,有以下方法:1,直接编辑/etc/network/interfaces文件,在if ace eth0 inet static后面添加一行:pre-up ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx(要改成的MAC)2,打开文件:/etc/iftab修改内容:eth0 mac 00:e0:4d:75:8e:50(改成你要的物理地址mac)3,先网卡“关闭” # ifconfig eth0

17.12.19有感

最近忙课设和复习,一直都没学什么新东西,其实是感觉最近懒了,今天遇到了两件事让我觉得不得不加紧学习进度了. 1.是学长在深信服的内推,一上来就要全栈的....后端我自己用的Node,他们要PHP,那么PHP是时候要系统学下了. 2.Python课上ai老师请了一个年轻的CTO来给我们讲爬虫技术,今天两节课都在讲些题外的,自身创业经历啊,大数据的发展历史啊,这位小哥貌似也是ACM出身,在湘大教书,自己也带了团队,有自己的创业公司.其实最令我注意的是他说到大学生创业%99的都死掉了,也讲了很多一般老

1-7 Sass的基本特性-基础

[Sass]声明变量 定义变量的语法: 在有些编程语言中(如,JavaScript)声明变量都是使用关键词"var"开头,但是在 Sass 不使用这个关键词,而是使用大家都喜欢的美元符号"$"开头.我想用一张图来解释,我一直坚信,一图胜千言万语: 上图非常清楚告诉了大家,Sass 的变量包括三个部分: 声明变量的符号"$" 变量名称 赋予变量的值 来看一个简单的示例,假设你的按钮颜色可以给其声明几个变量: $brand-primary : dar

C++17 新特性

Contracts boost::asio 可用于如socket等IO对象的同步或异步操作, 应用程序必须有一个io_service对象. io_service对象负责连接应用程序与操作系统的IO服务. boost::asio::io_service io_service; 要执行IO操作应用程序需要一个像TCP Socket的IO对象: boost::asio::ip::tcp::socket socket(io_service); 而后执行同步连接操作,发送如下事件: 1. 应用程序调用IO