gcc 编译选项 std=c++1y 和 std=c++14 之间的区别

Difference between gcc compile options std=c++1y and std=c++14

我安装了 gcc 4.9.2。我使用以下命令编译程序:

/root/gcc-4.9.2/bin/g++ -std=c++1y testing.cpp

注意除了选项-std=c++1y,还有一个选项-std=c++14。编译器是否会以相同的方式工作并为两个选项生成完全相同的可执行文件?

C++ 14 是最新的 ISO 标准,除非您需要一些 gcc 非标准功能,否则应该使用它。

c++1y 是在完成之前用来指代 c++14 标准的名称,因此它很可能是遵循标准草案,而不是实际标准本身。两者之间可能存在细微差别,但 c++14 是 ISO 标准。

简而言之,使用c++14

对于您提到的 gcc 4.9.2,c++14c++1y 没有区别。但是对于早期的 gcc 版本,例如gcc 4.8.1 有 no c++14 option

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

因为标准接受的年份还不知道。在这种情况下,使用 -std=c++1y 选项是 only solution 以启用即将到来的 c++14 标准的某些部分。