41

正如我们许多人所知(还有很多人不知道),C++ 目前正在为国际标准的下一次修订进行最终起草,预计将在大约 2 年内发布。草案和文件目前可从委员会网站获得。正在添加各种新功能,其中最大的是概念和 lambda。有一篇非常全面的Wikipedia 文章,其中包含许多新功能。GCC 4.3 及更高版本实现了一些 C++0x 特性

就新功能而言,我真的很喜欢类型特征(和适当的概念),但我的明确领导者是可变参数模板。在 0x 之前,长模板列表通常都涉及到 Boost Preprocessor,而且写起来很不爽。这使事情变得更容易,并允许将 C++0x 模板视为使用可变参数模板的完美功能语言。我已经用它们编写了一些非常酷的代码,我迫不及待地想更频繁地使用它们!

那么您最期待的功能是什么?

4

23 回答 23

63

变量类型推断的auto关键字

于 2008-09-26T04:47:13.653 回答
33

Lambda 和初始化列表。

此外,使最终将 C++ 带入垃圾收集模型变得更容易的更改,这些看起来很有趣。也许 C++1x 实际上会带来垃圾收集,但 0x/10 只是为可能发生的情况做好准备。

于 2008-09-26T05:00:30.937 回答
25

我想要 Rvalues 参考。

所有其他新功能都是我们可以轻松生活的东西(唉功能)。然而,到目前为止,C++ 中缺乏 Rvalues 导致数百名模板库作者不得不“破解”损坏的 Rvalue ref 问题。

于 2008-09-26T05:04:52.347 回答
22

可变参数模板!(结合 r 值引用为我们提供了完美的转发!)

于 2008-09-26T06:00:44.867 回答
17

线程和原子。

现在使用多核处理器,标准 C++0x 应该是 C++07。

G。

于 2008-09-26T04:52:10.473 回答
15

强类型枚举得到我的投票。帕斯卡只有大约 40 年的时间,所以很高兴看到 C++ 终于赶上了。

但是,该标准的发布确实是小菜一碟。更重要的是,当您想要使用的功能实际上得到真实世界工具链的完全可靠支持时。有些人似乎实际上喜欢编写无法在任何已知编译器上编译的符合标准的代码。祝他们好运。

于 2008-10-29T21:24:52.413 回答
11
  1. 它必须是一些 Boost 库的合并(shared_ptr<> 并绑定在列表顶部)

  2. 对模板实例化的控制应该最终解决巨大的编译时间问题,并使在大型项目中使用现代模板代码实际上可行。

  3. 模板类型定义

许多其他小而重要的事情,但它们在生产代码中确实很重要。

于 2008-09-26T05:16:53.880 回答
10

为我传递概念。但初始化列表、lambda 和可变参数模板紧随其后。

于 2008-09-26T05:08:09.530 回答
10

我无法在Null Pointer TypeTuple TypesRegex之间做出决定。“Foreach”也在上面。“智能指针”不言而喻...... :-)

基本上,我真的很期待更新。

我个人认为大量使用空指针类型会捕获很多错误。元组非常适合处理关系数据。很多很酷的东西。

于 2008-09-26T05:25:33.343 回答
8

它并不大,但我喜欢真正的nullptr的想法。应该是 git-go 中的一个关键字。

于 2008-09-29T06:30:55.053 回答
7

为我关闭。

于 2008-09-26T05:01:27.830 回答
7

自动关键字

于 2008-09-26T05:01:42.480 回答
5

Lambda概念

于 2008-09-26T05:18:23.063 回答
5

我认为迭代语法很酷......它实际上将for (auto x : collection)许多循环头的大小减少了 4 倍或更多(迭代器类型通常......冗长)!

这也意味着你不必在循环体中取消引用迭代器(对于传统的迭代器循环,你总是必须使用*iori->...来获取元素的值,但在这里你可以只使用x),在某些情况下案例使代码看起来更好。

于 2010-11-16T08:42:26.330 回答
4

unicode、多线程、hash_tables、智能指针和正则表达式。

ps:想知道为什么他们不能进行 gr8 代码审查并接受所有的 boost 和 tr1 库到标准中,让每个人的生活更轻松。然后,他们需要解决的只是就一个可行的可选垃圾收集模型达成一致。

于 2008-09-26T05:03:00.527 回答
4

嵌套模板声明中的尖括号

所以我将能够写

std::vector<std::vector<int>> a;

而不是可怕的

std::vector<std::vector<int> > a;
于 2010-06-25T10:47:07.543 回答
3

语法越来越差。

可变参数模板和 lambdas 都很好,但不幸的是,两者的语法都令人反感。

于 2008-09-26T16:38:28.550 回答
3

智能指针。不必显式地管理堆分配的对象,这确实使世界变得与众不同。

显然,您仍然需要“知道自己在做什么”,但根据我的经验,它至少将我使用过的软件中与内存相关的错误数量减少了一个数量级。

于 2008-09-26T20:41:08.217 回答
2

constexpr特别喜欢结合可变参数模板和用户定义的文字,我们最终可以拥有二进制文字和许多其他好东西。

obj.bitmask |= 00001010B; 
于 2008-10-26T10:09:20.440 回答
2

decltype :-) 和lambdas

于 2010-09-18T05:26:05.383 回答
1

正则表达式!!和并行编程库,虽然我还不知道它们的全部功能。

于 2009-05-29T02:12:04.513 回答
1

原始字符串文字!我认为类似 python 的字符串块很棒,但我错了!在 C++0x 中,原始字符串文字对于文本格式化非常有用。标记语言可以直接在您的源代码中编写!

于 2010-06-25T10:30:48.727 回答
0

目前我很喜欢我玩过的 C++0x:

  • 空指针
  • 静态断言
  • 拉姆达斯
  • shared_ptr 和 weak_ptr
  • unique_ptr
  • decltype 和 auto

我没有尝试过<regexp>……我认为这是一个伟大的想法……但我什至没有花时间看它。

于 2010-10-29T12:24:41.317 回答