用g ++编译c ++ 14-code

我在Ubuntu 14.04 LTS上使用g ++ 4.8.4。 当试图用'-std = c ++ 14'编译时,我得到这个错误:

g++: error unrecognized command line option '-std=c++14' 

用'-std = c ++ 11'编译工作正常,所以我不知道发生了什么事情。 g ++真的不支持c ++ 14吗? 我使用错误的命令行选项?

我用“sudo apt-get install g ++”应该自动检索最新版本,是不是正确?

对于gcc 4.8.4你需要在以后的版本中使用-std=c++1y ,看起来像从5.2开始,你可以使用-std=c++14

如果我们看一下gcc的在线文档,我们可以find每个版本的gcc的手册,我们可以通过在GCC 4.9.3手册下select4.9.3的Dialect选项来看到它:

'C ++ 1Y'

对ISO C ++标准的下一次修订,暂定于2014年进行。支持是高度实验性的,在将来的版本中几乎肯定会以不兼容的方式发生变化。

所以直到4.9.3你不得不使用-std=c++1y而gcc 5.2选项说:

'c ++ 14''c ++ 1y'

2014年的ISO C ++标准加上修正。 名称'c ++ 1y'已被弃用。

我不清楚为什么这是列在Options Controlling C Dialect但这是目前的文件是如何组织的。

GCC 4.8不支持-std=c++14标志。 如果要使用C ++ 14function,则需要使用-std=c++1y编译。 使用godbolt.org看来,支持-std=c++14最简单版本是GCC 4.9.0或Clang 3.5.0

G ++通过-std=c++14-std=c++1y支持C ++ 14。 后者是这个标准的通用名称,在它将被释放的哪一年被知晓之前。 在较旧的版本(包括你的版本)中,只有后者才被接受,因为发布年份在这些版本发布时还不得而知。

我用“sudo apt-get install g ++”应该自动检索最新版本,是不是正确?

它安装Ubuntu存储库中提供的最新版本,而不是最新的版本。

最新的GCC版本是5.2。