如果我的项目现在完全在 c++98 上,迁移到 c++11 的任何缺点



如果我目前的项目在 c++98 上,迁移到 c++11 有什么缺点或陷阱吗?我的意思是,在某些时候,我将开始使用 c++11 中的一些优势,例如 auto 等,并且不会对以前的编写代码执行任何操作?

似乎只有一个缺点,即无法使用旧的gcc在服务器上编译项目?例如,我在 FreeBSD 7 上,并且没有官方的新 gcc。

更新:@nurettin写了需要在 C++11 上的某个地方编译并对其进行测试的注释,但该应用程序非常具体且难以测试。它是后台守护进程,没有任何输出到控制台(类似于具有许多线程的Web服务器),因此很难调试。

显式operator bool是关于兼容性的主要细分。

但是,如果您想了解新版本的所有细微差别和更改,我建议您查看ISO C++委员会批准的C++编程语言的最终国际标准草案(FDIS)。它在附录C.2"C++和ISO C++ 2003"中有一个不兼容部分

其中一些总结在关于SO的答案中。

我可以为您总结一些常见的陷阱:

  • 注意新的关键字,字符串文字和语言语法中的其他核心差异例如

    #define u8<-- "abc"
    
  • 析构函数
  • 现在隐含地"不抛出"(坦率地说,从析构函数中抛出异常是一种糟糕的做法)

  • 在搜索依赖项时,也会考虑具有内部链接的函数

最新更新