在芬兰奥卢的最后一场会议中,ISO C++委员会完成了C++17功能列表的定义。在会议中,通过了许多新的语言和库的功能,包括constexpr if 、template <auto> 、结构化绑定和一些其他的功能。 正如委员会成员Jens Weller所写道,现在功能列表已经完成,即将开始复查阶段: 接下来的两次会议主要会推进复查、反馈和国家级机构标记的问题。这不会给标准增加新的内容,但是可能有轻微或重大变化。
在奥卢的最后一次委员会议上,C++17新增的功能中,Weller强调了以下功能: std::variant ,它提供了一个安全、范式、基于栈的可区别union容器。
if constexpr(expression) ,它可以看作C++版本中编译期的 if 。
Template auto ,它允许使用auto声明非类型的模版参数。这会允许开发者们写这样的代码:
1 2 | template void f() { }
f<10>();
|
1 2 | tuple get_tuple();
auto [a , b , c] = get_tuple();
|
1 2 3 4 5 6 | map mymap;
if ( auto result = mymap.insert(value); result.second) {
use(result.first);
}
|
另外,Sutter提到了其他一些值得强调的新特性,包括:
上面的列表中只包括了上一次委员会议中通过的新特性,但是新C++17中的功能列表部分会更长一些。如欲获取审核过程结束后新标准中的内容概览,请在Stack Overflow跟帖中查看。 查看英文原文:C++17 Feature List is Now Complete, Enters Review 稿源:infoQ 作者Sergio De Simone ,译者 薛梦迪 |