你今天如何使用C ++ 11?

时间:2009-11-18 08:19:06

标签: c++ c++11 standards forward-compatibility

这是一个问题,分为两个部分,第一部分是最重要的,现在关注

  • 您是否关注C ++ 11的设计和发展?您关注哪些博客,新闻组,委员会文件和其他资源?
  • 即使您没有使用任何新功能,它们对您当前的选择有何影响?
  • 您现在使用哪些新功能,无论是在制作中还是其他方面?

第二部分是关于新标准一旦成为最终的后续行动:

  • 您希望立即使用它吗?你正在做什么准备C ++ 11,除了之前的问题所列的那样?
  • 显然,编译器支持必须存在,但仍然需要考虑同事,辅助工具和其他因素。什么会影响你的采用?

编辑:原作真的太争论了;但是,我仍然对基本问题感兴趣,所以我试图将其清理干净,希望能让它接受。这似乎是一个比复制更好的途径 - 即使一些答案回应了议论语,他们仍然适用于他们解决问题的程度,所有答案都是适当的社区财产。

15 个答案:

答案 0 :(得分:23)

无法猜测有多少人对新的C ++ 0x感兴趣,我很确定每个了解C ++并使用它的人都很好奇,渴望得到更多关于它的消息。

一旦从g ++实现,我就开始使用C ++ 0x中的所有新东西。仍适用于小型非便携式项目。 为什么? - 人们经常告诉我忘记c ++并完全转换为脚本语言以获得更快的代码开发并忘记内存管理。但是,我最好的经验和知识是用c ++编写的。我知道RAII并且每天使用Boost库。现在,新功能让我写得比以前快得多。知道rvalues在这里,指针(甚至智能)从代码中消失了。使用lambdas rock和initilizer列表的STL算法让我很开心。自动关键字非常激动。

所以,我现在使用C ++ 0x的主要原因是开发速度

答案 1 :(得分:16)

我今天没有使用C ++ 0x,因为它会导致代码丢失。因为今天没有C ++ 0x Standard。

答案:没有 原因:代码可移植性

答案 2 :(得分:9)

不,因为它没有在我使用的编译器上完全实现。

当C ++ 0x出现,Visual Studio 2010完全发布,以及“匹配”g ++时,我会尽可能使用C ++ 0x。这可能是因为我经常开始新项目(我制作游戏)。

虽然我有一个现有的代码库,但每次我找到一种更好的方法时它都会改变;改变不是我的障碍。利用C ++ 0x只会是另一种变化。

您可以通过更大的代码库找到不同的意见。有些地方更喜欢代码看起来是统一的,这意味着参差不齐的C ++ 0x不是一个选项:他们要么必须转换整个事物以利用C ++ 0x,要么不使用它。

其他地方可能会鼓励使用C ++ 0x功能,并在业余时间尝试修复旧代码以匹配。

和我一样,其他地方可能会立即想要利用所有C ++ 0x提供的功能。

答案是:这取决于。

答案 3 :(得分:6)

不,但我想,特别是对于lambda功能。

答案 4 :(得分:5)

没有

我的所有应用软件都是用Java开发的。我所有的快速和脏代码都是用Python完成的。我所有的低级工作都是用C语言完成的。我一般不使用C ++(因此它对我没有影响)。

如果我 使用C ++,我会像处理C1x那样对待c ++ 0x - 我确保我的代码不会破坏,但我不打算使用新功能,直到标准完成并拂去灰尘。

关于我是否会在标准批准后立即使用新功能,没有。这个过程将是一个渐进的过程。当我的当前应用程序推出维护时,我可以添加它,具体取决于可能的好处。

在我考虑使用这些功能之前,即使我编写的新应用程序也需要新的语言功能。

答案 5 :(得分:3)

不,我大部分时间都在使用VC6 :(最早要到2020年才能使用C ++ 0x(也​​许我应该换公司?)

答案 6 :(得分:3)

我正在使用大量的C ++ 0x,特别是可变参数模板和函数,auto和decltype以及rvalue引用。

虽然使用g ++ 4.5和Visual Studio 10可以带来一点乐趣,但这些功能现在相当稳定,在两个编译器上的工作方式相同。

我现在开始的软件项目可能不会发布一年左右,到那时我希望这些新的编译器可以作为标准版本。

答案 7 :(得分:2)

是的,当我在自己的代码上玩弄时,不会有自然的偏见。

当我编写某些人将在旧编译器上使用的内容时,请不要。

答案 8 :(得分:2)

取决于。我正准备在我的硕士论文中使用某些C ++ 0x特性(尽管到目前为止我在等待VS2010b2时仍然坚持使用C ++ 03编译器)

但是,我不会在实际的专业制作工作中使用它。为此,我想等到标准最终确定,至少在MSVC的情况下,直到编译器在非beta版本中发布。

答案 9 :(得分:1)

我正在使用TR1(正则表达式,unordered_map,unordered_set ......)和一些提升功能,这些功能将会出现在下一个标准中(希望如此)lexical_cast ...每天都有,而不仅仅是今天:)

答案 10 :(得分:1)

今年的新工作,所以我心甘情愿地改变了.NET / C#世界。我用C ++做的大多数抱怨在C#中都是不存在的。他们做了很多事情(噢!我赞美MS)

我认为C ++已成为一个怪物,当我最后一次看到它时,C ++ 0x似乎会使怪物变大,而不是将其减少到真正必要的子集。

主观问题只是我的两分钱;)

答案 11 :(得分:1)

了解C ++ 0x的功能很有意思,特别是当我意识到我已经通过C ++ TR1使用其中一些功能时。到目前为止,扩展的for(“foreach”),static_assert<functional>中的改进是我在C ++ 0x程序中使用的更多。

它还教会了我一些关于代码重用的知识。尝试减少我必须更改的代码量以适应C ++ 0x,同时保留与C ++兼容的代码 - 尽可能多地使用0x(例如:库的东西)教会了我将一些C ++ 0x修复和元素集成到我的前C ++ 0x工具箱中;特别是扩展numeric_limits<>以包含const_成员,添加nullptr emulation,添加default_delete和类似的结构,并利用(显然经常被遗忘,因为我没有找到使用它的代码除了我的)[slist|forward_list]

我说今天使用C ++ 0x已经帮助我更好地继续使用C ++ - 今天在 em>之前。考虑到Boost有助于覆盖那里的一些基础,我不确定我是否会很快将这个跳跃到“完整”的C ++ 0x。并且我不想在很长的时间内用C ++触摸正则表达式或线程。

答案 12 :(得分:0)

我正在使用static_assert,decltype,偶尔使用r值引用

答案 13 :(得分:0)

现在,我正在使用的是auto和decltype,因为我的大多数代码都不使用任何需要r值引用或类似东西的东西,而且我现在对auto非常满意(beats声明一个地图矢量的迭代器)

答案 14 :(得分:0)

unordered_map。当map最初被指定并不是每个人都想支付对关联容器密钥进行排序的成本时,应该是显而易见的,但是,至少我们最终还是有一个完全标准化的STL容器。

我也在使用线程库和其他东西。哈哈,我是早期采用者!我没有受雇,也没有直接与任何人合作,所以我基本上可以按照自己喜欢的方式做这些事情。 :)