为什么g ++ 4.6.2仍然需要“-std = c ++ 0x”?

时间:2011-12-23 14:48:08

标签: c++ gcc g++

我下载并构建了gcc 4.6.2。我发现对于C ++ 11功能,仍然需要命令行选项-std=c++0x。这是为什么?是不应该默认支持它?

    $ g++ --version
    g++ (GCC) 4.6.2
    Copyright (C) 2011 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

4 个答案:

答案 0 :(得分:11)

因为

  • C ++ 11只有4个月的历史,对它的支持还远未完成或经过测试
  • 更改默认设置而没有大的公告和准备阶段的人不是很好
  • 目前尚不清楚默认值是否会发生变化(参见-std = C99)。

答案 1 :(得分:5)

阅读GCC网站:

<强> Status of Experimental C++0x Support in GCC 4.6

因此,您无法将默认值设为实验性的。 而且,它是在C ++ 11标准发布之前,实际名称没有定义,这解释了为什么C ++ 0x而不是C ++ 11。

如果您对GCC 4.7感兴趣,它仍然是实验性的:

<强> Status of Experimental C++11 Support in GCC 4.7

答案 2 :(得分:2)

仍然需要它,并且在可预见的将来可能会保持这种状态,因为C++11 has incompatibilities with C++03。默认情况下,将G ++更改为编译C ++ 11会破坏许多现有代码。

答案 3 :(得分:1)

我认为它被称为0x的事实会给你一个提示。它甚至没有完整(见http://gcc.gnu.org/projects/cxx0x.html