2013-07-15 61 views
1

gcc的网站还称: “GCC对C++ 11的支持仍处于试验阶段。” (http://gcc.gnu.org/projects/cxx0x.html)。 我感到犹豫在我的组织内争论是否会转向C++ 11功能,而释放编译器的人说这一点。 如果gcc说它是实验性的,我应该争论“-std = C++ 11”吗?是使用-std = C++ 11适用于生产代码GCC 4.8.1

+0

我不认为从我看过的所有使用中都不会有问题。它非常符合标准,并且错误不会经常出现。 – chris

+1

http://gcc.gnu.org/gcc-4.8/cxx0x_status.html看起来相当不错 – user2485710

+1

当问你自己这个问题时,考虑你的单元测试覆盖率。 :) –

回答

2

我怀疑这是的,你可以说,直到事情发生了罕见的那些事(牛回家,地狱冻结等),并没有找到一个解决一个。

这里的关键是,“实验性支持”大概意思是说,如果你是对GCC支持合同,你可能无法提高对11个特征的“缺陷”票。但另一方面,我们可能会期望大多数功能都相当强大,因为在C++ 11规范推出之前,它们已经讨论了很长时间。

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

另一部分看当然是“我们得到了什么好处,又有多​​少风险它影响到项目”。你是在改变整个系统,还是仅仅在一个角落中的一小部分,如果它突破可以通过以不同的方式做更多的步骤来解决?

最后,它真的,你必须去的东西“什么是前进和规避风险之间的最佳平衡。”

+0

我倾向于同意。我不知道当他们说“实验性”时,组织的含义是什么。 Clang等人。没有这样说。我真的认为我们有这种情况,但海湾合作委员会的声明似乎打败了我的情况。 – John

+1

很显然,我无法直接回答“GCC的实验意味着什么” - 它通常被用作“我们还没有完全测试过”(或者“它没有通过验证测试”或其他的东西这些线路 - 这可能是因为验证尚未完成,或者支持中出现了大量的漏洞 - 我不认为它是后者,但很可能是前者)。当然,这有点依赖于你的组织做了什么以及你测试的东西等等。我不确定我会用核试验台的“实验”编译器。游戏开发,当然 –

+0

@John在我用g ++ 4.8.1的旅程中,我发现,例如,他们将其标记为“实验性”的一个可能原因可能在于,特定C++ 11中的线程模型实现是从POSIX线程库借用的,所以它不是真正由编译器或标准库(libstdC++)实现的,它基本上是第三部分库,GNU无法控制此项目。 – user2485710