如果我的项目现在已经在c ++ 98上完成了迁移到c ++ 11的任何缺点

时间:2014-02-15 07:47:25

标签: c++ gcc c++11

如果我目前在c ++ 98上的项目,迁移到c ++ 11是否有任何缺点或陷阱?我的意思是,在某些时候我会开始使用c ++ 11中的auto等优点,并且不会对之前编写的代码做任何事情?

似乎只有一个缺点,就是用旧的gcc编译服务器上的项目是不可能的? 例如,我在FreeBSD 7上,而且没有正式的新gcc。

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

1 个答案:

答案 0 :(得分:2)

明确operator bool是关于兼容性的主要细分。

但是,如果您想了解新版本的所有细微差别和变化,我建议您查看ISO C ++委员会批准的用于C ++编程语言的最终草案国际标准(FDIS)。它在附录C.2 C ++和ISO C ++ 2003

中有一个不兼容的部分。

其中一些内容在this answer上总结为SO。

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

  • 注意语言语法中的新关键字,字符串文字和其他核心差异 e.g。

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

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