你最喜欢的C ++ 0x功能是什么?

时间:2008-09-26 04:43:19

标签: c++ c++11

正如我们许多人所知道的那样(许多人,更多人不知道),C ++目前正在进行下一版国际标准的最终起草工作,预计将在大约2年内发布。草稿和论文目前可从committee website获得。正在添加各种新功能,最大的概念和lambda。有一个非常全面的Wikipedia article具有许多新功能。 GCC 4.3及更高版本实施some C++0x features

就新功能而言,我非常喜欢类型特征(以及相应的概念),但我明确的领导者是可变参数模板。直到0x,长模板列表通常涉及Boost预处理器,并且编写起来非常不愉快。这使得事情变得更加容易,并且允许使用可变参数模板将C ++ 0x模板视为功能完备的语言。我已经用它们编写了一些非常酷的代码,我迫不及待地经常使用它们了!

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

23 个答案:

答案 0 :(得分:63)

自动关键字,用于变量类型推理

答案 1 :(得分:34)

Lambdas和初始化列表。

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

答案 2 :(得分:25)

我想要Rvalues参考。

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

答案 3 :(得分:22)

Variadic模板! (结合r值参考给我们完美的转发!)

答案 4 :(得分:17)

线程和原子。

现在使用多核处理器,C ++ 0x的规范应该是C ++ 07。

-G。

答案 5 :(得分:15)

Strongly Typed enums得到我的投票。 Pascal只有40年左右的时间,所以很高兴看到C ++终于迎头赶上了。

然而,该标准的发布实际上是一个非事件。更重要的是,当您想要使用的功能实际上完全可靠地支持真实工具链时。 There are folk that seem to actually enjoy writing standards-compliant code that fails to compile on any known compiler.祝他们好运。

答案 6 :(得分:11)

  1. 必须加入一些Boost库(shared_ptr<>并绑定列表顶部)

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

  3. 模板typedefs

  4. 许多其他小而重要的东西,但它们在生产代码中很重要。

答案 7 :(得分:10)

为我提供概念。但初始化列表,lambdas和可变参数模板紧随其后。

答案 8 :(得分:10)

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

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

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

答案 9 :(得分:8)

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

答案 10 :(得分:7)

自动关键字

答案 11 :(得分:7)

关闭我。

答案 12 :(得分:5)

Lambdas 概念

答案 13 :(得分:5)

嵌套模板声明中的

尖括号

所以我可以写

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

而不是可怕的

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

答案 14 :(得分:5)

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

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

答案 15 :(得分:4)

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

ps:不知道为什么他们不能进行gr8代码审查并接受所有boost和tr1 libs进入标准并让每个人的生活更轻松。然后他们必须解决的是同意一个可行的可选垃圾收集模型。

答案 16 :(得分:3)

智能指针。它实际上是一个不同的世界,不必显式内存管理堆分配的对象。

显然你仍然需要“知道你在做什么”,但根据我的经验,它已经减少了与我合作的软件中至少一个数量级的内存相关错误。

答案 17 :(得分:2)

语法越来越差。

Variadic模板和lambdas很不错,但遗憾的是两者的语法都很令人讨厌。

答案 18 :(得分:2)

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

obj.bitmask |= 00001010B; 

答案 19 :(得分:2)

答案 20 :(得分:1)

REGEX !!和并行编程库虽然我还不知道它们的功能。

答案 21 :(得分:1)

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

答案 22 :(得分:0)

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

  • nullptr
  • static_assert
  • lambda表达式
  • shared_ptr和weak_ptr
  • 的unique_ptr
  • decltype和auto

我没有尝试<regexp> ......我认为这是一个很大的想法......但我甚至没有花时间去看它。