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

Nem*_*emo 11 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.
Run Code Online (Sandbox Code Playgroud)

Pla*_*aHH 11

因为

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


Geo*_*roy 5

阅读GCC网站:

GCC 4.6中实验C++ 0x支持的现状

因此,你无法使默认实验.而且,它是在C++ 11标准版本之前,并且实际名称没有定义,这解释了为什么C++ 0x而不是C++ 11.

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

GCC 4.7中实验C++ 11支持的现状