C++17标准制定完成
据Herb Sutter的博客所写,在美国夏威夷Kona举行的冬季会议上,ISO C++标准委员会最终完成了C++17标准的制定工作。下面对C++17的主要特性做简要概括。
\u0026#xD;\n\u0026#xD;\n
Kona会议的主要议程是解决来自一些国家机构的审查意见,并修复一些软件故障,因此并未给出过多的新特性。特别需要指出的是,在Knoa会议上添加了一个新的std::byte
类型,精简了程序对“位导向”(byte-oriented)内存访问的处理方式。目前的实现是依赖于char(无论signed char还是unsigned char)类型的,鉴于char类型还承担了字符类型和算术运算类型的职责,这种实现尚存在着不合理之处。另一方面,std::byte
将会被分离出来作为一个专用类型。
\u0026#xD;\n\u0026#xD;\n
其它C++17主要新特性包括:
\u0026#xD;\n\u0026#xD;\n
- \u0026#xD;\n
可在constexprs中使用Lambda表达式,去除了预先存在的限制。使用constexprs定义的对象或函数可在编译等阶段就进行求值,因此可以实现一些高级的模板参数或数组大小说明符。编译器会确保constexprs对象或函数按设定的需求编译,实现所描述的使用。
\u0026#xD;\n \u0026#xD;\n\u0026#xD;\n
- \u0026#xD;\n
允许在Lambda表达式中,以值的形式得到
*this
,这对并行代码或使用std::future
的场景具有很大的影响,因为Lambda表达式在执行时无法保证this的有效性。\u0026#xD;\n \u0026#xD;\n\u0026#xD;\n
- \u0026#xD;\n
增加了
std::optional
,可使用optinal类型表示某个已定义或尚未定义的值。如果用C++的措辞解释,可以说optional是一种管理对象初始化状态的封装器。\u0026#xD;\n \u0026#xD;\n\u0026#xD;\n
- \u0026#xD;\n
增加了
std::variant
,可使用联合体类型定义类似于“浮点型或长整型的联合体”。\u0026#xD;\n \u0026#xD;\n\u0026#xD;\n
- \u0026#xD;\n
可推断类模板参数的构造函数,这样代码编写可简化为:
\u0026#xD;\n \u0026#xD;\n
auto lock = std::lock_guard(mut_, r1);
\u0026#xD;\n\u0026#xD;\n
而非:
\u0026#xD;\n\u0026#xD;\n
std::lock_guard<:shared_timed_mutex std::shared_lock=\"\"><:shared_timed_mutex>\u0026gt; lck(mut_, r1);
\u0026#xD;\n\u0026#xD;\n
- 可推断模板的无类型参数,例如: \u0026#xD;\n
template struct S; //可推断出v的类型。
\u0026#xD;\n\u0026#xD;\n
C++17新特性的列表非常长,这里无法一一列举。推荐Stack Overflow网站上的一篇问题解答,其中对C++17新特性做了一个简洁的归纳,更新至最近的Kona会议内容,并提供了指向官方委员会文档的链接。
\u0026#xD;\n\u0026#xD;\n
查看英文原文: C++17 Is Ready
\u0026#xD;\n\u0026#xD;\n
感谢张卫滨对本文的审校。
\u0026#xD;\n
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们。
C++17标准制定完成相关推荐
- 为什么5G标准制定,非得“你死我活”?
作者 | 孙松林 本文经授权转载自造就(ID:xingshu100) 2019年是5G商用元年,但是通过新闻报道我们知道,6G的研发已经提上了日程.为什么5G还没有大范围铺开,6G的研发就已经开始了呢 ...
- “刷脸”支付强化安全管理 标准制定正在推进
侯维科技识别通过率99%以上关键步骤交叉认证 "刷脸"支付强化安全管理标准制定中 经济参考报□记者张莫实习生何蕊北京报道 "刷脸"日趋流行,多家银行和支付机构已 ...
- 智能网联汽车-网联功能与应用(CFA)标准制定路线图
智能网联汽车-网联功能与应用(CFA)标准制定路线图 智能网联汽车-网联功能与应用(CFA)标准制定路线图 摘要 一.分析国内外汽车网联技术发展战略.应用状态和标准法规进展情况. 二.明确汽车网联技术 ...
- 封禁华为的美国,现在不得不在5G标准制定上“恢复合作”,网友:5G真香
十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 华为被列"实体清单"还未满一年,外媒今日却曝出消息: 美国商务部拟允许美国公司与华为合作. 这波操作的目的是什么? 根据 ...
- gcc c语言标准,GCC 7.1发布 支持当前所有的C ++ 17标准
原标题:GCC 7.1发布 支持当前所有的C ++ 17标准 作者 | Jakub Jelinek 翻译 | 雁惊寒 GCC(GNU Compiler Collection,GNU编译器套件),是由G ...
- 走近5G云游戏标准制定——握住互联网世界看不见的手
编者按:互联网公司和华尔街一样,喜欢拿新鲜的名词唬人.又因为科技领域互联互通的特性,许多现有名词也可以拿来随意排列组合.所以,当"未来网络实验室"."5G云游戏标准&qu ...
- 兄弟割席:HTML5标准制定组织分裂
为什么80%的码农都做不了架构师?>>> 日期:2012-7-23 来源:GBin1.com 原文来源:雷锋网 最新消息:HTML5标准制定组织WHATWG与W3C因为理念上 ...
- C++ 17 标准正式发布:终于能更简单地编写和维护代码了!
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 何为 C++ 17? C++17 是继 C++14 之后,C++ 编程语言 ISO/IEC ...
- C++17标准STL库并行策略在GCC编译器中的替代实现方法
C++17标准STL库并行策略在GCC编译器中的替代实现方法 严正声明:本文系作者davidhopper原创,未经许可,不得转载. 2019年8月5日更新: GCC 9.1.0可支持C++ 17标 ...
最新文章
- 常用的Percona-Toolkit工具
- 在中间层 .NET 应用程序中通过授权管理器使用基于角色的安全
- 智慧医疗机器人的普及还需很长一段路要走!
- 谷歌开源MobileNets:在移动设备上高效运行的计算机视觉模型
- 野生前端的数据结构基础练习(8)——图
- pandas的to_csv()使用方法
- 正在利用0day 时被人发现了,然后我灵机一动……
- HTML5 Form Data 对象的使用
- 博科交换机建立Zone基本配置
- python如何实现手眼定标_kafka基础和python如何操作kafka
- matlab 直流无刷电机,无刷直流电机的matlab仿真.pdf
- linux 强制重启 sysrq,用Magic SysRq键实现Linux安全重启
- 应用层 DNS域名解析服务器 文件传送协议FTP 简单邮件传送协议SMTP 万维网 HTTP超文本协议
- 区块链100讲:Truffle——一个更简单的部署智能合约的方法
- 数据结构|最小生成树问题
- 区块链资讯 2018.7.17 周二
- 最大似然位同步算法总结
- Web前端入门(十九)传统网页布局式之标准流、浮动
- solidworks2018安装
- 洋桃技术支持0001:GPIO驱动12864液晶屏需要注意哪些事项?