你最喜欢的C ++ 0xfunction是什么?
正如我们中许多人所知道的(还有许多人不知道),C ++目前正在接受国际标准下一版修订的最终草案,预计将在近两年内出版。 草稿和文件目前可从委员会网站上获得 。 各种各样的新function正在被添加,最大的概念和lambda。 有一个非常全面的维基百科文章与许多新function。 GCC 4.3及更高版本实现了一些C ++ 0xfunction 。
至于新function,我真的很喜欢types特征(和适当的概念),但我确定的领导是可变模板。 在0x之前,长的模板列表通常涉及到Boost预处理器,而且写起来非常不愉快。 这使得事情变得更容易,并且允许C ++ 0x模板被视为使用可变参数模板的完美function语言。 我已经写了一些非常酷的代码,我已经等不及更频繁地使用它们了!
那么你最期待的function是什么?
autovariablestypes推理的关键字
Lambda和初始化列表。
另外,为了使C ++最终成为一个垃圾收集模型变得更容易,这些看起来很有趣。 也许C ++ 1x实际上会带来垃圾收集,但是0x / 10只是为了可能性而设置的。
我想要Rvalues引用。
所有其他的新function是我们可以轻松生活的东西(唉function)。 然而到目前为止,在C ++中缺乏Rvalues已经导致数百个模板库作者不得不对破损的Rvalue ref问题“进行破解”。
可变模板! (结合r值参考给我们完美的转发!)
线程和primefaces。
现在使用多核处理器的标准C ++ 0x应该是C ++ 07。
G。
强types的枚举让我的投票。 帕斯卡只有这些大约40年,所以最好看到C + +最后赶上。
但是,标准的发布实际上是一个非事件。 更重要的是,当你想使用的function实际上完全可靠地支持真实世界的工具链。 有些人似乎真的喜欢编写符合标准的代码,而这些代码无法在任何已知的编译器上编译。 祝他们好运。
-
它必须包含一些Boost库(shared_ptr <>并绑定列表顶部)
-
对模板执行的控制应该最终解决大量编译时间的问题,使得在大型项目中使用现代模板代码是切实可行的。
-
模板typedefs
许多其他小而重要的东西,但他们在生产代码中很重要。
传递给我的概念。 但是初始化列表,lambdaexpression式和可变参数模板是紧随其后的。
我无法决定空指针types , 元组types或正则expression式 。 “Foreach”也在那里。 “智能指针”不言而喻… 🙂
基本上,我真的很期待更新。
就个人而言,我认为大量使用空指针types将会捕获很多错误。 元组对于处理关系数据非常有用。 很多很酷的东西。
这不是很大,但我喜欢真正的nullptr的想法。 从git-go应该是一个关键字。
closures我。
自动关键字
Lambdas和概念
嵌套模板声明中的angular括号 。
所以我可以写
std::vector<std::vector<int>> a;
而不是可怕的
std::vector<std::vector<int> > a;
for (auto x : collection)
迭代语法是很酷的我认为…它真正地将多个循环头的大小减less了4倍或更多(迭代器types通常是…详细)!
这也意味着你不必循环体内的迭代器(用传统的迭代器循环,你总是必须使用*i
或i->...
来获取元素的值,但在这里你可以只使用x
),这在某些情况下会使代码更好看。
unicode,multithreading,hash_tables,智能指针和正则expression式。
ps:想知道为什么他们只是不能做一个gr8代码审查,并接受所有的提升和tr1库标准,使每个人的生活更轻松。 所有他们将要解决的是同意一个工作可选的垃圾收集模型。
智能指针。 它确实使不同的世界不必显式地memory management堆分配的对象。
很明显,你仍然需要“知道你在做什么”,但是根据我的经验,它减less了与我一起工作的软件中至less一个数量级的与内存相关的错误。
语法从恶化到糟糕。
Variadic模板和lambdaexpression式很好,虽然两者的语法不幸的是令人反感。
我喜欢constexpr
特别是结合variadic模板和用户定义的文字,我们终于可以有二进制文字和许多其他的好东西。
obj.bitmask |= 00001010B;
decltype :-)和lambda
正则expression式! 和并行编程库,虽然我还不知道它们的特点。
原始string文字 ! 我以为Python的string块很棒,但我错了! 在C ++中,0x原始string文字对于文本格式非常有用。 标记语言可以直接写在你的源代码中!
目前我已经很喜欢我玩过的C ++ 0x了:
- nullptr
- static_assert
- lambdaexpression式
- shared_ptr和weak_ptr
- 的unique_ptr
- decltype和auto
我没有尝试<regexp>
…我认为这是一个很大的想法…但我甚至没有花时间去看它。