首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迁移到c++11

迁移到c++11
EN

Stack Overflow用户
提问于 2012-04-06 15:50:19
回答 1查看 1.7K关注 0票数 7

我正在开发一个主要使用C++作为其核心组件的产品。虽然它使用Visual C++作为Windows平台的主要编译器,其编辑器和调试器作为主要开发环境,但没有使用任何微软特定的技术。对于其他平台,它使用gcc进行编译。

我的代码库大量使用模拟右值引用(使用Boost移动库)、可变模板(使用Boost处理器),在某些情况下还使用表达式模板。

我很想切换到C++11,使用右值引用、完美的转发、构造函数的默认和删除、可变模板以及自动和解密类型来获得更干净的代码库。

如果我这样做了,我可能会对现有代码进行一些修改以简化它(使用模板别名,也可能使用常量表达式)。在这种情况下,我不得不切换到使用mingw的Windows平台上的gcc,因为Visual Studio没有默认和删除以及可变模板的实现。另外,我必须切换到gdb作为调试器和不同的代码编辑器。

对我来说,在代码简单性和性能方面的好处看起来很大,但是稳定性,可用性(在一些平台上,比如安卓),调试(从Visual Studio迁移到gdb,因为我们有很多为Visual Studio调试器开发的可视化工具)和代码编辑器(对于大量的模板代码,我发现自动完成,重构等用处不大,Codelite,Codeblock,QtCreator在我们的构建系统中工作得很好)是一些问题。

我想知道是否有任何中型/大型项目,无论是商业项目还是开源项目,都使用/打算使用上述任何C++11功能?做这样的迁移需要多大的努力?

任何实践经验、小贴士或智慧的话语都会帮助我做出决定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-06 16:03:29

首先:这取决于政策。

像所有的技术一样,从可以工作的东西切换到新的东西本身就是一个风险。根据您的心态和项目的批判性,您接受的风险程度可能会有所不同(例如,我在个人项目中使用树的顶部版本Clang,但在工作中使用成熟的gcc )。

就我个人而言,我建议不要一头扎进准备好生产的项目中,而是零散地选择可以工作的特性。

你提到过:

forwarding

  • default/delete

  • variadic

  • rvalue引用& perfect constexpr

模板和

  • 类型推断(auto/decltype)

  • template别名和perfect

support for many C++11 features附带了VC++11。例如,你现在就可以开始使用右值引用和类型推断。如果我没记错的话,这些可以和gcc 4.5.x分支一起使用,它已经有一年多的历史了,所以很耐用。

例如,您的列表中一个值得注意的缺失是lambda,它也得到了VC++11和gcc的支持。

如果你想更进一步,那么你必须切换编译器和环境。这项工作明显更大,因为您将需要重新培训团队(就我个人而言,我对gdb在mingw上有一些缺点……)。

我建议樱桃选择在两个编译器上都能工作的,现在,除非你觉得冒险。不过,迁移始终是一种业务风险。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10040686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档