C ++ 17中有哪些新功能?

C ++ 17现在功能齐全,因此不太可能经历大的变化。 为C ++ 17提出了数百个提案。

在C ++ 17中,哪些特性被添加到C ++中?

当使用支持“C ++ 1z”的C ++编译器时,当编译器更新到C ++ 17时,哪些功能可用?


#1楼

语言特色:

模板和通用代码

LAMBDA

属性

语法清理

更清洁的多回程和流量控制

  • 结构化绑定

    • 基本上,一流的std::tieauto
    • 例:
      • const auto [it, inserted] = map.insert( {"foo", bar} );
      • 创建的变量itinserted与来自推定的类型pair那个map::insert回报。
    • 使用元组/对喜欢& std::array s和相对平坦的结构
    • 实际上在标准中命名为结构化绑定
  • if (init; condition)switch (init; condition)

    • if (const auto [it, inserted] = map.insert( {"foo", bar} ); inserted)
    • if(decl)扩展到decl不可转换为bool的情况。
  • 推广基于范围的循环

    • 似乎主要支持哨兵,或者结束与开始迭代器类型不同的迭代器,这有助于使用以null结尾的循环等。
  • 如果constexpr

    • 许多要求的功能,以简化几乎通用的代码。

杂项

图书馆补充:

数据类型

调用东西

文件系统TS v1

新算法

  • for_each_n

  • reduce

  • transform_reduce

  • exclusive_scan

  • inclusive_scan

  • transform_exclusive_scan

  • transform_inclusive_scan

  • 添加用于线程目的,即使您没有使用它们也会暴露

穿线

(部分) 图书馆基础知识TS v1未在上文或下文中介绍

集装箱改进

智能指针变化

其他std数据类型的改进:

杂项

性状

弃用

自C ++ 14以来, Isocpp.org有一个独立的变化列表; 它已被部分掠夺。

自然地,TS工作并行继续,因此有一些TS不够成熟,必须等待下一次迭代。 下一次迭代的目标是先前计划的C ++ 20,而不是C ++ 19,正如一些谣言所暗示的那样。 已避免使用C ++ 1O。

reddit帖子这个reddit帖子中获取的初始列表,通过谷歌搜索或从上面的isocpp.org页面添加链接。

SD-6功能测试列表中掠夺的其他条目。

clang的功能列表库功能列表接下来将被掠夺。 这似乎不可靠,因为它是C ++ 1z,而不是C ++ 17。

这些幻灯片在其他地方缺少一些功能

虽然没有问“删除了什么”,但这里有一些简短的列表,列出了C ++ 17中从C ++中删除的一些东西((大多数是?)以前弃用的东西):

删除:

有重写。 我不确定这些是否对代码有任何影响,或者它们是否只是标准中的清理:

尚未整合到上面的论文:

  • P0505R0 (constexpr chrono

  • P0418R2 (原子调整)

  • P0512R0 (模板参数扣除调整)

  • P0490R0 (结构化绑定调整)

  • P0513R0 (更改为std::hash

  • P0502R0 (并行异常)

  • P0509R1 (更新异常处理限制)

  • P0012R1 (使异常规范成为类型系统的一部分)

  • P0510R0 (变体限制)

  • P0504R0 (可选/变体/任意标签)

  • P0497R0 (共享ptr调整)

  • P0508R0 (结构化绑定节点句柄)

  • P0521R0 (共享指针使用计数和唯一更改?)

规格变化:

进一步参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值