什么稳定的c ++ 11功能可以安全使用

时间:2011-10-19 19:40:12

标签: c++ c++11

有哪些C++11功能已经足够成熟,我可以在项目中安全使用。我在谈论GCC主要是我很少需要Visual Studio。我显然不希望在我的代码中包含一个需要在几个月后重写的功能。我应该在这一开始就开始使用这些功能吗?因为我们大多数人所做的事情都不是c++11 dependent我们可以做旧学校方法中的所有事情和所有事情。那么我们是否应该在这个早期阶段开始使用C ++ 11功能呢?

2 个答案:

答案 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引用和移动语义的性能改进中受益。