2013-04-07 25 views
6

私はlambdasを利用するtbb :: parallel_for関数を使用しています。私は、次のコードで構文エラーを取得しています:Visual Studio 2010 Express EditionでC++ 11コンパイラを有効にするにはどうすればよいですか?

void parallel_relax(Class object, std::vector<Vertex *> verList) { 
    tbb::parallel_for (blocked_range<int>(0, verList.size()), [=](const blocked_range<Vertex *>& r) { 
     for(Vertex *vit = r.begin(); vit != r.end(); ++vit) { 
      Vertex *v = vit; 
      object.function(v); 
     } 
    }); 
} 

構文エラー:

syntax error : '[' 
1>main.cpp(16): error C2143: syntax error : missing ')' before '{' 
1>main.cpp(16): error C2143: syntax error : missing ';' before '{' 
1>main.cpp(17): error C2065: 'r' : undeclared identifier 
1>main.cpp(17): error C2228: left of '.begin' must have class/struct/union 
1>   type is ''unknown-type'' 
1>main.cpp(17): error C2065: 'r' : undeclared identifier 
1>main.cpp(17): error C2228: left of '.end' must have class/struct/union 
1>   type is ''unknown-type'' 
1>main.cpp(20): error C2059: syntax error : ')' 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

私は、これはコンパイラに問題があると思います。 Visual Studio 2010 Express EditionのためのC++ 11コンパイラはどうすれば入手できますか?提案してください。

+0

16,17行目は何ですか? –

+0

"tbb :: parallel_for"は16行目で "for(Vertex * vit = r.begin(); vit!= r.end(); ++ vit)"という行は17行目です – Hello

+0

だから私はできませんWindows 7上ではVisual Studio 2010しか使用できないため、C++ 11を使用しますか?私はMinGW G ++でEclipseを使いたくないのですが、それは醜いと感じています... :( – ha9u63ar

答えて

3

C++ 11の機能を使用するには、最新のバージョンVisual Studio 2012を使用する必要があります。

C++11 Features (Modern C++)から:

のVisual C++ 2010が2012にその上で展開するVisual StudioでC++ 11の前身だったC++ 0xのコア言語仕様、およびVisual C++で多くの機能を実装多くのC++ 11の機能が含まれています。

4

Visual C++ 2010 Expressには、C++ 11の機能は含まれていますが、すべてではありません。以下は、VC++ 2012と同様にサポートする機能の一覧です。 http://msdn.microsoft.com/en-ca/library/vstudio/hh567368.aspx

+0

C++ 11の機能を有効にするにはどうすればいいですか?デフォルトで有効になっているのはなぜですか? – Hello

+2

上記のように、すべてではありません。一見したところで少し欺かれていますが、VC10のlambdaのサポートが部分的であるため、構文エラーが発生しています。 – Chris

+0

リンクはVS2012,13,15のみを表示するようです – slyy2048

関連する問題