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

cop*_*pro 41 c++ c++11

正如我们许多人所知道的那样(许多人,更多人不知道),C++目前正在进行下一次国际标准修订的最终起草工作,预计将在大约2年内发布.草案和论文目前可从委员会网站获得.正在添加各种新功能,最大的概念和lambda.维基百科有一篇非常全面的文章,其中包含许多新功能.GCC 4.3及更高版本实现了一些C++ 0x功能.

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

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

Mar*_*ade 63

用于变量类型推理的auto关键字

  • 是的..有趣的是,C++ 0x中最微不足道的变化是最受欢迎的.它毕竟是我们的编码员所关心的:)是的,它真棒. (8认同)
  • 我梦见汽车.如果可用,我将在每个声明中使用它.4个字符的好处. (7认同)
  • 耶汽车!不再"for(vector <pair <int,string >>> :: const_iterator i; ...."! (6认同)
  • 哇噢!不再猜测要添加多少个星号; ) (2认同)

Chr*_*ruk 34

Lambdas和初始化列表.

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

  • GC阻止RAII.我宁愿拥有智能指针和RAII而不是GC. (13认同)
  • 哦不,不!RAII在Lisp中,C#虽然与C++略有不同,但是C++/CLI它在GCed类上具有析构函数,其行为与C++析构函数相同. (6认同)
  • C++ 0x在您的基础中添加到您的代码中.得爱lambdas和初始化列表. (2认同)

Rob*_*uld 25

我想要Rvalues参考.

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

  • 我假设你的意思是右值参考,我们已经有rvalues (3认同)

Ecl*_*pse 22

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


gra*_*eds 17

线程和原子.

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

G.

  • 什么?你从哪里得到那个规则?委员会计划在0x之后更频繁地(约5年间隔)更新标准.当然,C++ 98和'03似乎距其不到10年. (8认同)
  • 除了它不可能.作为ISO标准,它不能每10年修改一次以上.所以2008年10月10日是最早设定新标准的.请注意,最后一次会议是在9月,预计会尽快批准. (3认同)

Rod*_*ddy 15

强烈输入的枚举得到我的投票.Pascal只有40年左右的时间,所以很高兴看到C++终于迎头赶上了.

但是,该标准的出版实际上是一个非事件.更重要的是,当您想要使用的功能实际上完全可靠地支持真实工具链时.有些人似乎真的喜欢编写符合标准的代码,这些代码无法在任何已知的编译器上编译.祝他们好运.


use*_*044 11

  1. 它必须是一些Boost库的结合(shared_ptr <>并绑定列表顶部)

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

  3. 模板typedef

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


Gre*_*ers 10

放下我的概念.但初始化列表,lambda和可变参数模板紧随其后.

  • 太糟糕了,委员会决定不在C++ 0x中包含概念 (7认同)
  • 我想大多数人都认为概念是一个好主意,他们不能很快确定合适的实施方案. (3认同)

ker*_*vin 10

我无法在Null Pointer Type,Tuple TypesRegex之间做出决定.'Foreach'也在那里."智能指针"不言而喻...... :-)

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

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


Mic*_*urr 8

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

  • 应该是nullptr不应该 (4认同)

Tra*_*ony 7

关闭我.


And*_*ein 7

自动关键字


yes*_*aaj 5

Lambdas概念


lor*_*ova 5

嵌套模板声明中的尖括号.

所以我将能够写作

std::vector<std::vector<int>> a;
Run Code Online (Sandbox Code Playgroud)

而不是可怕的

std::vector<std::vector<int> > a;
Run Code Online (Sandbox Code Playgroud)


sno*_*rpe 5

for (auto x : collection)迭代语法是非常酷,我认为...它字面上的4倍以上减少了许多环头的大小(迭代器类型往往是...详细)!

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