切换到C++;11 我们将用C++作为编程语言来启动一个长期的项目。

切换到C++;11 我们将用C++作为编程语言来启动一个长期的项目。,c++,c++11,forward-compatibility,C++,C++11,Forward Compatibility,我听说C++0x将在2011年推出,所以他们称之为C++11 当C++ 11出现时,我们仍然在开发这个项目,并且想知道是否可以使用新C++标准的任何特性,以便能够: 比旧C++和的代码快 当新标准到来时,是否可以轻松切换 这取决于您使用的编译器 作为GC1的例子,GCC具有包含C++ 11的一些特征的Tr1扩展。 < P> Visual C++ 2010和最新的GCC版本(-STD= C++ +0x)支持C++ 11的新特性,但不是全部。特别是,您可以开始使用带有大括号的新初始值设定项语法;这

我听说C++0x将在2011年推出,所以他们称之为C++11

当C++ 11出现时,我们仍然在开发这个项目,并且想知道是否可以使用新C++标准的任何特性,以便能够:

    比旧C++和的代码快
  • 当新标准到来时,是否可以轻松切换

这取决于您使用的编译器


作为GC1的例子,GCC具有包含C++ 11的一些特征的Tr1扩展。

< P> Visual C++ 2010和最新的GCC版本(-STD= C++ +0x)支持C++ 11的新特性,但不是全部。特别是,您可以开始使用带有大括号的新初始值设定项语法;这是C++11中最大的语法变化。如果一部分使用C++98样式,而另一部分使用C++11样式,那么这也是代码中最不一致的地方。

页面显示了gcc(主Unix编译器)、MSVC(主Microsoft编译器)和其他一些(包括英特尔)支持的C++0x部分。Clang的额外信息是,虽然我认为他们对当前标准的C++支持仍然不完整。

仅仅因为标准出来并不意味着编译器神奇地得到更新——大多数编译器为以前的标准提供了合理的支持,但一些特性从未得到过支持,比如导出。(从C++0x中删除)。依赖于新特性的首次实现,这也不是一个好的策略——如果我要赶在最后期限之前工作,我更愿意让其他人做实验

另外,我也不会太快把它称为C++11——标准过程充满了延迟的可能性


<强>编辑:我看到你正在使用RW库。在这种情况下,新标准的许多特性可能不会引起即时兴趣,因为它们针对的是模板编写器和C++标准库的用户。

< P>不要认为它是一次切换到所有新的特征。优点及其实施的质量

例如,
long-long
甚至在被考虑用于C++0x之前就已经是一个相当常见的编译器扩展,新的
auto
语法非常有用,并且可能会得到很好的支持。您可能需要非常谨慎地处理一些复杂的组合,例如类型推断和
decltype
函数在类内使用新的
->
语法,使用可变模板和新的解析规则
>

Scott Meyers(有效C++系列的作者)上周刚刚上传了以下内容:

从某种意义上说,这与另一个在这个帖子的不同答案中提到的类似。主要区别在于Meyers的链接只包含他自己尝试过的东西。我预计它将在未来几个月内不断更新


还有,我就是这样发现的,他正在研究一些与C++0x有关的教育材料(显然超出了他的培训课程)但是现在这太过投机了,所以让我们继续我上面提供的第一个链接。

您计划使用哪个平台/编译器?没有编译器限制。唯一的要求是使用Rogue Wave库。因此我可以自由设置编译器。您有“C++11”的源代码吗名称?@Joachim Herb Sutter在这篇文章中建议,只有在标准真正发布后,才可以更改名称。@camelord引用“如果我们(明年发布),我们可以停止“x-is-hex”笑话,开始称它为C++11。”但是它还没有发布,所以我们只能使用C++0x。VS2010还没有发布。我确信非转基因产品不会有产品开发。它将在几个月内发布。问题是:“到那时会有发布吗?”如果答案是否定的,那么现在使用beta测试将避免迁移。抱歉,什么是非转基因产品?没有编译器限制。唯一的要求是使用流氓波库。所以我没有编译器设置。使用新标准并不意味着“老”C++不再被使用。这意味着软件架构。可以用这种方式来使用旧的C++作为RW库的接口,并为其他应用程序使用新的C++。当标准发布时,C++0x编译器将处于相当好的状态。例如,我确信Sutter在他的博客上说过,微软正在尽可能密切地跟踪这些草案,并且它目前打算在发布后的第一个主要版本符合标准(无论如何,它与当前的C++03兼容,与您习惯的一样好)。我认为,造成重大发布延迟的一个更可能的原因是,一个或多个主要编译器强调了实施更改的困难。@Steve:难道你没有从Sutter那里得到该声明的链接吗?无论如何,如果他们能在2012年前推出一个合理兼容的版本(这大概是下一个VS的目标时间),那太好了。@jalf:抱歉,搜索时找不到它。当我说“我确定”时,那是夸张的:“我想”。我可能记错了关于部分C++0x支持的评论。请不要把你的商业计划建立在我对Sutter不承诺的错误记忆上;-)嗯,我想我只是在使用新的MFC和TB1。使用C++0x发行版.Thx来回答问题似乎会持续很长时间。我认为最近的clang发行版声称完全支持2003标准。