C++17 功能列表现在完成,进入复查阶段

在芬兰奥卢的最后一场会议中,ISO C++委员会完成了C++17功能列表的定义。在会议中,通过了许多新的语言和库的功能,包括constexpr if、template 、结构化绑定和一些其他的功能。

正如委员会成员Jens Weller所写道,现在功能列表已经完成,即将开始复查阶段:

接下来的两次会议主要会推进复查、反馈和国家级机构标记的问题。这不会给标准增加新的内容,但是可能有轻微或重大变化。

在奥卢的最后一次委员会议上,C++17新增的功能中,Weller强调了以下功能:

std::variant,它提供了一个安全、范式、基于栈的可区别union容器。

if constexpr(expression),它可以看作C++版本中编译期的 if。

Template auto,它允许使用auto声明非类型的模版参数。这会允许开发者们写这样的代码:

template  void f() { }
f<10>();        // deduces int

Herb Sutter强调了这个功能开启的许多可能性,例如在一个函数模版内部而不是通过许多模板特化来囊括所有它的算法特例情况。

结构化绑定,它使得在元组中声明并初始化多个变量成为可能:

tuple get_tuple();
auto [a , b , c] = get_tuple();

if和which中的变量声明与for循环中已经允许的格式相似:

map mymap;
if (auto result = mymap.insert(value); result.second) {
// insert succeeded, and result is valid for this block
use(result.first);  // ok
// ...
}

另外,Sutter提到了其他一些值得强调的新特性,包括:

为字节对齐数据动态内存分配

保证副本省略,这可以确保当你使用一个值传递的对象来初始化本地变量时,编译器不会执行任何额外的复制或移动,就像C++11里一样。

上面的列表中只包括了上一次委员会议中通过的新特性,但是新C++17中的功能列表部分会更长一些。如欲获取审核过程结束后新标准中的内容概览,请在Stack Overflow跟帖中查看。

文章转载自 开源中国社区[http://www.oschina.net]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值