如果我目前在c ++ 98上的项目,迁移到c ++ 11是否有任何缺点或陷阱?我的意思是,在某些时候我会开始使用c ++ 11中的auto
等优点,并且不会对之前编写的代码做任何事情?
似乎只有一个缺点,就是用旧的gcc编译服务器上的项目是不可能的? 例如,我在FreeBSD 7上,而且没有正式的新gcc。
更新 @nurettin写了关于需要在c ++ 11上编译并对其进行测试的注释,但该应用程序非常具体且难以测试。它是没有任何输出到控制台的后台守护进程(类似于具有许多线程的Web服务器)所以它很难调试....
答案 0 :(得分:2)
明确operator bool
是关于兼容性的主要细分。
但是,如果您想了解新版本的所有细微差别和变化,我建议您查看ISO C ++委员会批准的用于C ++编程语言的最终草案国际标准(FDIS)。它在附录C.2
“ C ++和ISO C ++ 2003 ”
其中一些内容在this answer上总结为SO。
我可以总结一些常见的陷阱:
注意语言语法中的新关键字,字符串文字和其他核心差异 e.g。
#define u8<-- "abc"
析构函数现在隐含“无法抛出”(坦率地说,从析构函数中抛出异常是一种可怕的做法)
在搜索依赖关系时也会考虑具有内部链接的函数