【发布时间】:2012-04-06 07:50:19
【问题描述】:
我正在开发一个主要使用 C++ 作为其核心组件的产品。尽管它使用 Visual C++ 作为 Windows 平台的主要编译器,并将其编辑器和调试器作为主要开发环境,但并未使用任何 Microsoft 特定技术。对于其他平台,它使用 gcc 进行编译。
我的代码库大量使用模拟右值引用(使用 Boost 移动库)、可变参数模板(使用 Boost 处理器),在某些情况下还使用表达式模板。
我很想切换到 C++11 以使用右值引用、完美转发、构造函数的默认和删除、可变参数模板以及 auto 和 decltype 来获得更简洁的代码库。
如果我这样做,我可能会对现有代码进行一些修改以简化它(使用模板别名和可能的 constexpr)。在这种情况下,我必须使用 mingw 切换到 Windows 平台的 gcc,因为 Visual Studio 没有实现默认和删除以及可变参数模板。此外,我必须切换到 gdb 作为调试器和不同的代码编辑器。
对我来说,在代码简单性和性能方面的好处看起来很大,但稳定性、可用性(在某些平台上,如 Android)、调试(从 Visual Studio 迁移到 gdb,因为我们有许多为 Visual Studio 调试器开发的可视化工具) 和代码编辑器(与其说是大量模板代码,我还没有发现太多使用自动完成、重构等,而且 Codelite、Codeblocks、QtCreator 与我们的构建系统配合得很好)是一些问题。
我想知道是否有任何中型/大型项目(无论是商业项目还是开源项目)使用/打算使用上述任何 C++11 功能?进行这种迁移需要付出多少努力?
任何实践经验、技巧或智慧之言都会帮助我做出决定。
【问题讨论】:
-
建议和列表问题通常不是 Stack Overflow 处理的内容。
-
我建议你再等一会儿。等到适当的 VC++ 支持。 mingw32中的头文件有问题。
-
看看他们在存储库 [1] 中有 [C++11 Migrator][1] 的 clang 项目:blog.llvm.org/2013/04/status-of-c11-migrator.html