Gnu C ++何时会支持C ++ 11而不明确要求?

目前,使用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);
  • 等等。

GCC 6.0: https : //gcc.gnu.org/gcc-6/changes.html

C ++的默认模式现在是-std=gnu++14而不是-std=gnu++98

我认为最接近我可以得到的答案是从info gcc命令:

修订后的ISO C ++标准于2011年作为ISO / IEC 14882:2011发布,被称为C ++ 11; 在发布之前,它通常被称为C ++ 0x。 C ++ 11包含对C ++语言的一些更改,其中大部分已经在GCC的实验C ++ 11模式中实现。 有关实验性C ++ 11模式中可用的C ++ 11function的信息,请参阅http://gcc.gnu.org/projects/cxx0x.html 。 要在GCC中select此标准,请使用选项'-std = c ++ 11'; 要获得标准所要求的所有诊断,还应该指定'-pedantic'(或'-pedantic-errors',如果你希望它们是错误而不是警告)。

http://gcc.gnu.org/projects/cxx0x.html页面说:;

重要提示:GCC对C ++ 11的支持仍然是实验性的。 某些function是基于早期的build议实现的,在更新到与最终的C ++ 11标准相匹配时,不会尝试保持向后兼容性。

libstdc ++页面也显示它不完整。 (我甚至不认为regex已经实现了。)

史蒂夫·杰索普(Steve Jessop)的回答基本上在最后一段中说了同样的话,但引用了他的回答的第一部分:

C ++ 11已经有了几年的标准,但是编译器不会将其默认模式切换到C ++ 11,直到:

  • 在绝对最小的情况下,C ++ 11支持在该编译器及其使用的库中完成。 如果编译器作者对可靠性有任何担忧,也是稳定的。
  • 优选地,编译器中的主要版本号增加,因为C ++ 11不完全向后兼容C ++ 03。
  • 理想情况下,按照熟知的时间表,用户可以为变更做好准备。

更新:原来的答案在过去的28个月已经过时了。 根据nobar的回答 ,GCC 6.1默认支持GNU扩展的C ++ 14。 GCC 6.1于2016年4月27日发布。我很惊讶,但非常高兴看到这种新标准的快速采用!

至于其余的原始答案,我仍然看到保持那部分答案如何使某些标志“默认”的价值。 所以我保持下面。


有没有计划,当我只能说[…]

你可以在Makefile中定义默认的标志,然后所有你必须说的是make

如何在gcc中启用C ++ 11? 应该让你开始(或一些makefile教程 )。

另一个似乎经常popup在这里在Stackoverflow的build议是添加一个bash别名alias g++="g++ --std=c++0x" , 在这里看到如何。 不过,我个人不会这么做,会导致不愉快的意外; C ++ 11已经发生了重大的变化。 我会创build自己的makefile,然后inputmake


看来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构build的软件做任何事情都是另外一个问题。