正如我们许多人所知道的那样(许多人,更多人不知道),C ++目前正在进行下一版国际标准的最终起草工作,预计将在大约2年内发布。草稿和论文目前可从committee website获得。正在添加各种新功能,最大的概念和lambda。有一个非常全面的Wikipedia article具有许多新功能。 GCC 4.3及更高版本实施some C++0x features。
就新功能而言,我非常喜欢类型特征(以及相应的概念),但我明确的领导者是可变参数模板。直到0x,长模板列表通常涉及Boost预处理器,并且编写起来非常不愉快。这使得事情变得更加容易,并且允许使用可变参数模板将C ++ 0x模板视为功能完备的语言。我已经用它们编写了一些非常酷的代码,我迫不及待地经常使用它们了!
那么您最热切期待的是什么功能?
答案 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)
必须加入一些Boost库(shared_ptr<>并绑定列表顶部)
对模板实例化的控制应该最终解决大量编译时间的问题,并且在大型项目中使用现代模板代码实际上是可行的。
模板typedefs
许多其他小而重要的东西,但它们在生产代码中很重要。
答案 7 :(得分:10)
为我提供概念。但初始化列表,lambdas和可变参数模板紧随其后。
答案 8 :(得分:10)
我无法在Null Pointer Type,Tuple Types或Regex之间做出决定。 '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倍或更多(迭代器类型通常是......详细的)!
这也意味着你不必在循环体中取消引用迭代器(使用传统的迭代器循环,你总是必须使用*i
或i->...
来获取值的元素,但在这里你可以使用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:
我没有尝试<regexp>
......我认为这是一个很大的想法......但我甚至没有花时间去看它。