C++17 功能列表现在完成,进入复查阶段 - 开源中国社区
C++17 功能列表现在完成,进入复查阶段
oschina 2016年07月31日

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

oschina oschina 发布于2016年07月31日 收藏 15

有免费的MySQL,为什么还要买? >>>  

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

正如委员会成员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();
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++17中的功能列表部分会更长一些。如欲获取审核过程结束后新标准中的内容概览,请在Stack Overflow跟帖中查看。

查看英文原文C++17 Feature List is Now Complete, Enters Review

稿源:infoQ   作者Sergio De Simone ,译者 薛梦迪

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:C++17 功能列表现在完成,进入复查阶段
分享
评论(30)
精彩评论
1
C++本来就语法多,不停 的增加还怎么学。。。
最新评论
0
搞得 更不友好了
0
壮大标准库啊,如果一味的追求新特效,制造作死。这帮委员尽来虚的,一点都不务实。哎不说了,都是一般纸上功夫厉害,操作能欠缺的家伙
1
C++本来就语法多,不停 的增加还怎么学。。。
0

引用来自“gzwxn”的评论

网络库不进入还好。使用 asio 这种过度设计的库简直就是噩梦,与轻量级完全不沾边的东西。
我都怀疑都没有人在真正的生产环境用 asio 或者 boost::asio。
我的上线代码用了单独的 asio,封装的比较死,分析完消息内容进行再处理时,比较头疼,不想再用了
0
c++的巅峰时刻已经过去了。c#、go、Java、Python的开发效率远远超过c++。
0

引用来自“Raymin”的评论

太复杂了,还在继续复杂化。
未来的语言应该是简单易学、表达能力强、不容易出错。
go 欢迎你
0
C++彪版本,怎么看怎么有老巫婆在脸上抹厚厚的一层增白蜜的既视感。。。
0
很多特性最终都用不到
0

引用来自“ruki”的评论

如果把所有c++的新特性都用上 去写个项目,到时候走人了,移交给其他人维护。。那得痛苦死 。。哈哈。。
好想法
0

引用来自“eechen_”的评论

一些用Java的辣鸡东西,就不要来评价了
一个连C#都比不上的辣鸡语言
有什么资格评价C++
拉仇恨的呀……
0
如果把所有c++的新特性都用上 去写个项目,到时候走人了,移交给其他人维护。。那得痛苦死 。。哈哈。。
0
c++已经走向了一条不归路,新特性仅仅为了填老特性埋的坑而已。。没有为实际的开发角度着想。。

语言,还是简单高效为好,我还是继续c吧。。那点语言特性够用了,剩下的只要自己不断的扩展和封装自己的c库,来进行高效开发就行了。。

我用了这么多年,还是c最顺手。。
0

引用来自“gzwxn”的评论

另一个不爽的地方是 C++ 的字符串太难用了,缺少一些便利函数,比如 split、trim/strip、startswith/endswith、replace、toupper/tolower 这些,反而大量引入 find_XXX 这种没什么卵用的函数……

引用来自“冰力”的评论

哈哈哈,兄弟说的对,用D语言吧,你肯定会喜欢!
我的本意是希望 C++ 牺牲一点接口上的正交性,不要追求有了<algorithm>就一定不在字符串类上面定义一些便利函数。我认为 C++ 目前仍是编写高性能程序的最佳选择(之一?),其他语言看起来都有其明显的局限性。
0
其实我最想要的是类似bcb中的__property关键字的语法糖
0
一些用Java的辣鸡东西,就不要来评价了
一个连C#都比不上的辣鸡语言
有什么资格评价C++
0
需要超越 Rust
0

引用来自“gzwxn”的评论

另一个不爽的地方是 C++ 的字符串太难用了,缺少一些便利函数,比如 split、trim/strip、startswith/endswith、replace、toupper/tolower 这些,反而大量引入 find_XXX 这种没什么卵用的函数……
哈哈哈,兄弟说的对,用D语言吧,你肯定会喜欢!
0
另一个不爽的地方是 C++ 的字符串太难用了,缺少一些便利函数,比如 split、trim/strip、startswith/endswith、replace、toupper/tolower 这些,反而大量引入 find_XXX 这种没什么卵用的函数……
0
网络库不进入还好。使用 asio 这种过度设计的库简直就是噩梦,与轻量级完全不沾边的东西。
我都怀疑都没有人在真正的生产环境用 asio 或者 boost::asio。
0
壮大标准库要比新特性更加重要,c++我现在都不知道还会不会使用了,编译器现在用的只支持到c++11
顶部