你最喜欢的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实际上完全可靠地支持真实世界的工具链。 有些人似乎真的喜欢编写符合标准的代码,而这些代码无法在任何已知的编译器上编译。 祝他们好运。

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

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

  3. 模板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通常是…详细)!

这也意味着你不必循环体内的迭代器(用传统的迭代器循环,你总是必须使用*ii->...来获取元素的值,但在这里你可以只使用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> …我认为这是一个很大的想法…但我甚至没有花时间去看它。