web-dev-qa-db-ja.com

C ++ 14-codeをg ++でコンパイルします

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 ++」を使用しましたが、正しいですか?

48
Silverlan

gcc 4.8.4については、後のバージョンで-std=c++1yを使用する必要があります。5.2から始めるように見えますが、-std=c++14を使用できます。

Gcc online documents を見ると、gccの各バージョンのマニュアルを見つけることができ、 Dialectオプションに移動して確認できます。 4.9.3GCC 4.9.3 manual の下で:

「c ++ 1y」

2014年に暫定的に計画されているISO C++標準の次の改訂。サポートは非​​常に実験的であり、将来のリリースではほぼ確実に互換性のない方法で変更されます。

4.9.3までは、[ gcc 5.2 options と言う間に-std=c++1yを使用する必要がありました。

「c ++ 14」「c ++ 1y」

2014 ISO C++標準および修正。 「c ++ 1y」という名前は非推奨です。

これがOptions Controlling C Dialectの下にリストされている理由は明らかではありませんが、それがドキュメントの現在の編成方法です。

58
Shafik Yaghmour

-std=c++14フラグは、GCC 4.8ではサポートされていません。 C++ 14機能を使用する場合は、-std=c++1yでコンパイルする必要があります。 godbolt.org を使用すると、-std=c++14をサポートする最も古いバージョンはGCC 4.9.0またはClang 3.5.0のようです

15
NathanOliver

G ++は、-std=c++14-std=c++1yの両方を介してC++ 14をサポートします。後者は、リリースされる年が知られる前の標準の一般名でした。古いバージョン(ご使用のバージョンを含む)では、後者のバージョンのみが受け入れられます。これは、それらのバージョンがリリースされた時点ではリリース年がまだ不明だったためです。

最新バージョンを自動的に取得する「Sudo apt-get install g ++」を使用しましたが、正しいですか?

存在する最新バージョンではなく、Ubuntuリポジトリで利用可能な最新バージョンをインストールします。

最新のGCCバージョンは5.2です。

4
sepp2k

https://Gist.github.com/application2000/73fd6f4bf1be6600a2cf9f56315a2d91 の指示に従って、Ubuntu 14.04で必要なgccバージョン(gcc 5またはgcc 6)をセットアップします。手順には、必要に応じてバージョンを切り替えることができるようにupdate-alternativesを構成することが含まれます。

1
WillC