2013-05-09 8 views
5

私はC++ 11標準を使って書かれたいくつかのコードを持っていますが、私たちのg ++​​バージョンは4.4.6です。 11をサポートする必要があります(4.3以降)。-std = G ++ 4.4.6で認識されないC++ 11フラグ

しかしフラグをコンパイルしようとしている時に、 "-std = C++ 11 -std = gnuの++ 11"、私はエラー-std = C++でコンパイル

cc1plus: error: unrecognized command line option "-std=c++11" 
cc1plus: error: unrecognized command line option "-std=gnu++11" 

の繰り返しを取得0Xは、

DeviceInfo.cpp:22: error: expected initializer before ‘:’ token 

としてエラーコードのこの行に対応する生成:

for (cl::Platform& plat : platforms) 

この構文のC++ 11の特定のビットで? (それは私に似ていないが、すべてこのコードは、コンパイラで提供されるので、動作するはずの例として与えられている。

すべてのヘルプを?

+4

'C++ 11'フラグを取得するには、GCC> = 4.7が必要です。 4.4が古すぎる場合は、AFAIKの範囲ベースで、 '-std = C++ 0x'を指定しても、範囲ベースにはなりません。少なくとも、コンパイラのマニュアルページを読んでください。サポートされているオプションはそこにリストされています。 – Mat

答えて

10

-std=c++11設定ははるかにそれ以降のバージョンでサポートされていますGCC。-std=c++0x設定で有効になった初期のC++ 11の初期サポート。これは。あなたが試すべきか、おそらく

あるはい、あなたが使用しようとしているfor構文は、主にC++ 11の構文。

です
+0

クイックヘルプへの感謝: – Joe

+0

ソースリンクも共有されていると私は感謝しています。 –

0
for (cl::Platform& plat : platforms) 

はい、それはC++ 11の特定の使い方です。 GCC 4.7以降では、-std = C++ 11オプションを指定してC++ 11をサポートしています。

3

ループの範囲ベースが4.6以降でサポートされているように見えます。

This pageは、C++ 11の機能のGCCサポートを示しています。

関連する問題