我下载并构建了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.
答案 0 :(得分:11)
因为
答案 1 :(得分:5)
阅读GCC网站:
<强> Status of Experimental C++0x Support in GCC 4.6 强>
因此,您无法将默认值设为实验性的。 而且,它是在C ++ 11标准发布之前,实际名称没有定义,这解释了为什么C ++ 0x而不是C ++ 11。
如果您对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)