目前,使用g ++ - 4.8.1,您必须通过
在C ++ 11模式下编译文件g++ -std=c++11 -o prog.x prog.cpp
当我可以说
时是否有计划g++ -o prog.x prog.cpp
编译prog.cpp
?
也许prog.cpp
有
#include <regex>
thread_local
class Widget { int member = 5; }
MyType operator"" myt(const char*, sze_t);
答案 0 :(得分:29)
GCC 6.0:https://gcc.gnu.org/gcc-6/changes.html
C ++的默认模式现在是
-std=gnu++14
而不是-std=gnu++98
。
答案 1 :(得分:20)
我认为我能得到的答案最接近的是info gcc
命令:
修订后的ISO C ++标准于2011年作为ISO / IEC发布 14882:2011,被称为C ++ 11;在它出版之前 通常称为C ++ 0x。 C ++ 11包含了几处更改 C ++语言,其中大部分都是在实验中实现的 GCC中的C ++ 11模式。有关C ++ 11功能的信息 在实验C ++ 11模式中可用,请参阅 http://gcc.gnu.org/projects/cxx0x.html。要选择此标准 GCC,使用选项'-std = c ++ 11';获得所有诊断 标准要求,你还应该指定'-pedantic'(或 '-pedantic-errors'如果你想让它们成为错误而不是错误 警告)。
http://gcc.gnu.org/projects/cxx0x.html页面上写着:
重要:GCC对C ++ 11的支持仍然是实验性的。一些 功能是根据早期提案实施的,没有尝试 将在更新时保持向后兼容性 以匹配最终的C ++ 11标准。
libstdc++页面也显示它不完整。 (我甚至认为regex
尚未实施。)
Steve Jessop's answer基本上在最后一段中说了同样的话,但引用他答案的第一部分:
C ++ 11已经标准化了几年,但编译器却没有 将其默认模式切换为C ++ 11,直到:
- 绝对最低限度,C ++ 11支持在该编译器及其使用的库中完成。而且还稳定,如果是编译器 作家对可靠性一无所知。
- 优选地,编译器中的主要版本号增加,因为C ++ 11与C ++ 03不完全向后兼容。
- 理想情况下,根据众所周知的时间表,以便用户可以为变化做好准备。
答案 2 :(得分:13)
更新:过去28个月内,原始答案已过时。根据{{3}},GCC 6.1默认支持带有GNU扩展的C ++ 14。 GCC 6.1于2016年4月27日发布。我很惊讶但很高兴看到新标准的快速采用!
至于原始答案的其余部分,我仍然看到保留该部分的价值,以回答如何使某些标志“默认”。所以我把它放在下面。
当我可以说[...]
时,是否有计划
您可以在Makefile中定义默认标志,然后您要说的只是make
。
nobar's answer的已接听答案应该让您开始(或某些How do I enable C++11 in gcc?)。
Stackoverflow中经常出现的另一个建议是添加bash别名alias g++="g++ --std=c++0x"
,请参阅makefile tutorial如何。但是,我本人不会这样做,它会导致令人不快的意外; C ++ 11已经发生了重大变化。我会创建自己的makefile并只键入make
。
答案 3 :(得分:-3)
默认情况下,GCC 5.0将具有gnu11(c ++ 11 AFAIK的方言),并且在更改中共享c ++ 11的改进。见https://gcc.gnu.org/gcc-5/changes.html。它似乎也会对C ++ 14提供一些支持。
关于@ marc-glisse共享的bugzilla场景,其中一个更有趣的陈述似乎不在议事日程,详见https://gcc.gnu.org/gcc-5/criteria.html: -
已经对Bugzilla中开放的所有回归进行了分析,并且都是如此 被视为不太可能影响大多数用户,或被确定为 对受影响的用户影响最小。例如,印刷 诊断中的错误可能比较常见,但也很少 对用户的影响。
通常,编译器生成错误代码的回归, 或拒绝编制有效的程序,将被视为 足够严重以阻止释放,除非有实质性的 减轻因素。 - GCC发布标准页面
时间表确实可以确定何时以及是否会发生https://gcc.gnu.org/develop.html#timeline
所以希望到2015年我们应该看到一个新的gcc,其中支持c ++ 11作为默认值。当GNU / Linux发行版占用并且为使用c ++ 11构建的软件做任何他们需要做的事情时,这完全是另一个问题。