有哪些C++11
功能已经足够成熟,我可以在项目中安全使用。我在谈论GCC
主要是我很少需要Visual Studio。我显然不希望在我的代码中包含一个需要在几个月后重写的功能。我应该在这一开始就开始使用这些功能吗?因为我们大多数人所做的事情都不是c++11 dependent
我们可以做旧学校方法中的所有事情和所有事情。那么我们是否应该在这个早期阶段开始使用C ++ 11功能呢?
答案 0 :(得分:8)
C ++ 11标准最终完成并发布,因此不会再有任何更改。实现仍然落后一点,并且可能实现稍微旧版本的C ++ 0x,但是当它们更新时你可能不会注意到很多差异。
C ++ 11并不是完全向后兼容的,所以你要做的第一件事就是开始考虑C ++ 11的兼容性。 GCC有一个警告标志“-Wc ++ 0x-compat”来帮助解决这个问题。不兼容性非常小,但这应该会出现任何问题。
一个很大的不兼容性是libstdc ++的ABI随着转移到C ++ 11而改变,所以你还必须确保你可以处理它。
一旦你知道移动是安全的,就开始用C ++ 11模式构建。在编写新代码或更改旧代码时,您可以逐步采用任何对您有用的C ++ 11功能。您可能还需要考虑检查已弃用功能的使用情况,例如旧的异常规范,并将其替换为新的东西。
有很多新东西,所以看看标准,如果你可以在网上得到它或一些文件。我发现我想直接使用的大多数有趣的东西都在库中。不幸的是,这似乎是当前实施仍落后最多的地方。
答案 1 :(得分:0)
您可以访问:
http://gcc.gnu.org/projects/cxx0x.html
此链接在不同的GCC版本中提供C ++ 0x支持。
我建议你现在使用C ++ 11(只需在GCC命令行中添加-std = c ++ 0x)。如果你很幸运,那么代码中什么都不会改变。即使您不使用任何C ++ 11功能,您仍然可以从rvalue引用和移动语义的性能改进中受益。