题
正如我们许多人都知道(和许许多多不)、C++目前正在进行最后起草的下一个修订的国际标准,预计将会发布在大约2年。草案和文件是目前可从 委员会的网站.各种新的特点正在加入的最大正在概念和lambda.有一个非常全面的 维基百科的文章 与许多新的特征。海湾合作委员会4.3和以后的实施 一些C++0x功能.
尽的新功能去,我真的很喜欢的类型的特征(以及相应的概念),但我明确的领导是可变的模板。直到0x,长模板,列出了涉及提高预处理器通常,非常不愉快的写。这使事情变得容易得多,并允许C++0x模板要像对待一个完美的功能语言使用可变的模板。我已经写了一些非常酷的代码与它们已经和我等不及要使用它们更多的时候!
所以什么样的功能是你最热切地期待?
解决方案
自动关键字,用于变量类型推理
其他提示
Lambdas和初始化列表。
此外,这些更改使得最终将C ++变为垃圾收集模型变得更容易,这看起来非常有趣。也许C ++ 1x实际上会带来垃圾收集,但是0x / 10只会为可能性做好准备。
我想要Rvalues参考。
所有其他新功能都是我们可以轻松实现的功能(唉功能)。然而,到目前为止,C ++中缺少Rvalues已导致数百个模板库作者必须<!>“hack <!>”;围绕破损的Rvalue ref问题。
Variadic模板! (结合r值参考给我们完美的转发!)
线程和原子。
现在使用多核处理器,C ++ 0x的规范应该是C ++ 07。
-G。
强类型枚举获得我的投票。 Pascal只有40年左右的时间,所以很高兴看到C ++终于迎头赶上了。
然而,该标准的发布实际上是一个非事件。更重要的是,当您想要使用的功能实际上完全可靠地支持真实工具链时。 有些人似乎真的喜欢编写符合标准的代码,无法在任何已知编译器上编译。祝他们好运。
-
必须加入一些Boost库(shared_ptr <!> lt; <!> gt;并在列表顶部绑定)
-
对模板实例化的控制应该最终解决大量编译时间的问题,并且在大型项目中使用现代模板代码实际上是可行的。
-
模板typedefs
醇>
许多其他小而重要的东西,但它们在生产代码中很重要。
为我提供概念。但初始化列表,lambdas和可变参数模板紧随其后。
它并不大,但我喜欢真正的 nullptr 的想法。应该是git-go中的关键词。
关闭我。
自动关键字
Lambdas 和概念
尖括号。
所以我可以写
std::vector<std::vector<int>> a;
而不是可怕的
std::vector<std::vector<int> > a;
for (auto x : collection)
迭代语法很酷我认为......它实际上将许多循环头的大小减少了4倍或更多(迭代器类型通常是......详细的)!
这也意味着你不必在循环体中取消引用迭代器(使用传统的迭代器循环,你总是必须使用*i
或i->...
来获取元素的值,但是这里您可以使用x
),这在某些情况下会使代码看起来更好。
unicode,多线程,hash_tables,智能指针和正则表达式。
ps:不知道为什么他们不能进行gr8代码审查并接受所有boost和tr1 libs进入标准并让每个人的生活更轻松。然后他们必须解决的是同意一个可行的可选垃圾收集模型。
智能指针。它实际上是一个不同的世界,不必显式内存管理堆分配的对象。
显然你仍然需要<!>来知道你正在做什么<!>“,但根据我的经验,它已经减少了与软件相关的内存相关错误的数量至少一个数量级我已经与之合作。
语法越来越差。
Variadic模板和lambdas很不错,但遗憾的是两者的语法都很令人讨厌。
我喜欢constexpr
,尤其是与可变参数模板和用户定义的文字相结合,我们最终可以拥有二进制文字和许多其他好东西。
obj.bitmask |= 00001010B;
REGEX !!和并行编程库虽然我还不知道它们的功能。
原始字符串文字!我认为类似python的字符串块很棒,但我错了!在C ++ 0x中,原始字符串文字对于文本格式化非常有用。标记语言可以直接在源代码中编写!
目前,我喜欢很多C++0x,我已经发挥了有:
- 转换。
- static_assert
- lambda
- 情况和weak_ptr
- unique_ptr
- decltype和汽车
我还没有尝试过 <regexp>
...我认为这是一个巨大的想法...但我甚至没有花时间来看待它。