据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标准制定完成相关推荐

  1. 为什么5G标准制定,非得“你死我活”?

    作者 | 孙松林 本文经授权转载自造就(ID:xingshu100) 2019年是5G商用元年,但是通过新闻报道我们知道,6G的研发已经提上了日程.为什么5G还没有大范围铺开,6G的研发就已经开始了呢 ...

  2. “刷脸”支付强化安全管理 标准制定正在推进

    侯维科技识别通过率99%以上关键步骤交叉认证 "刷脸"支付强化安全管理标准制定中 经济参考报□记者张莫实习生何蕊北京报道 "刷脸"日趋流行,多家银行和支付机构已 ...

  3. 智能网联汽车-网联功能与应用(CFA)标准制定路线图

    智能网联汽车-网联功能与应用(CFA)标准制定路线图 智能网联汽车-网联功能与应用(CFA)标准制定路线图 摘要 一.分析国内外汽车网联技术发展战略.应用状态和标准法规进展情况. 二.明确汽车网联技术 ...

  4. 封禁华为的美国,现在不得不在5G标准制定上“恢复合作”,网友:5G真香

    十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 华为被列"实体清单"还未满一年,外媒今日却曝出消息: 美国商务部拟允许美国公司与华为合作. 这波操作的目的是什么? 根据 ...

  5. gcc c语言标准,GCC 7.1发布 支持当前所有的C ++ 17标准

    原标题:GCC 7.1发布 支持当前所有的C ++ 17标准 作者 | Jakub Jelinek 翻译 | 雁惊寒 GCC(GNU Compiler Collection,GNU编译器套件),是由G ...

  6. 走近5G云游戏标准制定——握住互联网世界看不见的手

    编者按:互联网公司和华尔街一样,喜欢拿新鲜的名词唬人.又因为科技领域互联互通的特性,许多现有名词也可以拿来随意排列组合.所以,当"未来网络实验室"."5G云游戏标准&qu ...

  7. 兄弟割席:HTML5标准制定组织分裂

    为什么80%的码农都做不了架构师?>>>    日期:2012-7-23  来源:GBin1.com 原文来源:雷锋网 最新消息:HTML5标准制定组织WHATWG与W3C因为理念上 ...

  8. C++ 17 标准正式发布:终于能更简单地编写和维护代码了!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 何为 C++ 17? C++17 是继 C++14 之后,C++ 编程语言 ISO/IEC ...

  9. C++17标准STL库并行策略在GCC编译器中的替代实现方法

    C++17标准STL库并行策略在GCC编译器中的替代实现方法 严正声明:本文系作者davidhopper原创,未经许可,不得转载.  2019年8月5日更新: GCC 9.1.0可支持C++ 17标 ...

最新文章

  1. 常用的Percona-Toolkit工具
  2. 在中间层 .NET 应用程序中通过授权管理器使用基于角色的安全
  3. 智慧医疗机器人的普及还需很长一段路要走!
  4. 谷歌开源MobileNets:在移动设备上高效运行的计算机视觉模型
  5. 野生前端的数据结构基础练习(8)——图
  6. pandas的to_csv()使用方法
  7. 正在利用0day 时被人发现了,然后我灵机一动……
  8. HTML5 Form Data 对象的使用
  9. 博科交换机建立Zone基本配置
  10. python如何实现手眼定标_kafka基础和python如何操作kafka
  11. matlab 直流无刷电机,无刷直流电机的matlab仿真.pdf
  12. linux 强制重启 sysrq,用Magic SysRq键实现Linux安全重启
  13. 应用层 DNS域名解析服务器 文件传送协议FTP 简单邮件传送协议SMTP 万维网 HTTP超文本协议
  14. 区块链100讲:Truffle——一个更简单的部署智能合约的方法
  15. 数据结构|最小生成树问题
  16. 区块链资讯 2018.7.17 周二
  17. 最大似然位同步算法总结
  18. Web前端入门(十九)传统网页布局式之标准流、浮动
  19. solidworks2018安装
  20. 洋桃技术支持0001:GPIO驱动12864液晶屏需要注意哪些事项?

热门文章

  1. Android广播机制:Broadcast
  2. Android应用的基本组件介绍
  3. Linux内核态抢占机制分析
  4. object-c中归档的用法
  5. 基于RBAC的权限设计模型
  6. 使用 Ajax 实现本地化后的客户端消息验证
  7. Android BLE学习(三):编写自己的 BLE蓝牙读写工具(功能仿照nrf master control panel)
  8. mysql5.7的资源限制策略_MySQL-5.7密码策略及用户资源限制
  9. lisp ssget 浩辰_AutoCAD和浩辰CAD,gCAD都可以用的lisp
  10. ExcelPro《EXCEL图表之道-如…