c++ - -std=c++11 是否适合使用 gcc 4.8.1 的生产代码

标签 c++ gcc c++11

<分区>

gcc 网站仍然说:“GCC 对 C++11 的支持仍处于试验阶段。” (http://gcc.gnu.org/projects/cxx0x.html)。 当发布编译器的人这么说时,我对在我的组织内争论是否要求转向 C++11 特性感到犹豫。 如果 gcc 说它是实验性的,我应该支持“-std=c++11”吗?

最佳答案

我怀疑这是你可以争论的事情之一,直到一些罕见的事情发生(奶牛回家, hell 卡住等)并且找不到解决方案。

这里的关键是“实验性支持”可能意味着如果您签订了 GCC 支持契约(Contract),您可能无法针对 11 项功能提出“缺陷”票。但另一方面,我们可能期望大多数功能都相当健壮,因为在 C++11 规范发布之前它们已经讨论了很长时间。

确定您的产品是否由编译器正确构建的关键仍然取决于您对产品代码的测试(作为不同级别的单元(函数、类、共享库、对您的产品有意义的可执行文件)和“完整”产品)。这并不会根据 C++11 支持是否为实验性而改变。即使是非实验性代码有时也会在编译器中中断。

另外一个要看的部分当然是“我们得到了什么好处,对项目有多大的风险影响”。您是要更改整个系统,还是只更改一个角落的一小部分,如果它坏了,可以通过以不同的方式执行更多步骤来解决?

最后,这确实是您必须考虑“前进与避免风险之间的最佳平衡点”的问题。

关于c++ - -std=c++11 是否适合使用 gcc 4.8.1 的生产代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17658396/

相关文章:

c++ - boost::variant 访问者返回错误(最烦人的解析?)

c++ - 调整 QOpenGLTexture 的大小并保留属性

c++ - 为什么使用模板参数的类型成员作为函数的返回类型可以在没有typname关键字的情况下工作,但在其他地方却不起作用?

c++ - move 构造函数相对于采用 bool 表示是复制还是 move 的复制构造函数有什么优势?

c++ - 如何创建 C++ 11 非默认可构造分配器?

C++ 重载后缀运算符

multithreading - C++0x线程问题

c++ - boost regex_search - 匹配一个字符的第一次出现

c++ - 有符号/无符号比较和 -Wall

c++ - 没有警告的返回语句后的代码