在gcc中启用C++ 0x支持的副作用

dim*_*mba 5 gcc c++11

以下链接,我想知道在GCC中启用C++ 0x是否存在一些副作用.

根据gcc:"GCC对C++ 0x的支持是实验性的 ".

我担心的是,例如编译器会生成一些不同的代码,或者标准库使用一些在gcc中被破坏的C++ 0x特性.

因此,如果我没有明确使用任何C++ 0x功能,它可能会破坏我现有的代码吗?

rub*_*nvb 3

C++0x 支持已经并且正在大力开发中。这意味着一件事是错误可以很快得到修复,另一件事意味着可能存在小错误。我说小,有两个原因:

  1. libstdc++尚未从头开始重写,因此所有旧元素都与可用之前一样稳定c++0x,甚至更稳定,因为经过了几年的错误修复。

  2. 新/旧标准中存在尚未解决的极端情况。这些是你所说的运行时怪癖吗?不会。C++0x现在已经开发了 4 个版本的支持,不用担心。

该标志的大部分影响将体现在新的语言功能中,移动构造函数等库功能std::thread(在 posix 平台上)不会影响不使用它们的代码。

总而言之,在日常生产中, “实验”这个词太严格了。在 GCC 致力于支持的三/四年中,该标准发生了变化。旧的修订版c++0x将在新的 GCC 中被破坏,但这是一件好事。C++0x就非付费 pdf 世界而言,已完成,因此不应添加任何重大更改。提前决定是否想要新东西,因为一旦习惯使用它,你就无法将其关闭。