2013-04-07 11 views
6

Sto usando la funzione tbb :: parallel_for che utilizza lambda. Sto ottenendo gli errori di sintassi con il seguente codice:Come abilitare il compilatore C++ 11 su Visual Studio 2010 Express Edition?

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); 
     } 
    }); 
} 

errori di sintassi:

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 ========== 

Credo che questo sia il problema con il compilatore. Come ottengo il compilatore C++ 11 per Visual Studio 2010 Express Edition. Si prega di suggerire.

+0

Quali sono le righe 16 e 17? –

+0

"tbb :: parallel_for" è la riga 16 e "for (Vertex * vit = r.begin(); vit! = R.end(); ++ vit)" è la riga 17 – Hello

+0

quindi non potrò usare C++ 11 perché sto usando Windows 7 e posso usare solo Visual Studio 2010? BTW ... Non voglio usare Eclipse con MinGW G ++ perché lo trovo brutto ... :( – ha9u63ar

risposta

3

Per ottenere le funzionalità di C++ 11, è necessario utilizzare l'ultima versione, Visual Studio 2012.

Da C++11 Features (Modern C++):

Visual C++ 2010 implementato molte caratteristiche della specifica del linguaggio C++ 0x nucleo, che è stato il precursore di C++ 11 e Visual C++ in Visual Studio 2012 si espande da quello di include molte funzionalità di C++ 11.

4

Visual C++ 2010 Express contiene le caratteristiche di C++ 11, ma non tutte. Ecco un elenco delle funzionalità supportate (oltre a VC++ 2012): http://msdn.microsoft.com/en-ca/library/vstudio/hh567368.aspx

+0

Come abilitare le funzionalità di C++ 11? Se è abilitato di default, allora perché sta dando errori di sintassi? – Hello

+2

Come ho detto sopra, non tutti .La lista è un po 'ingannevole alla prima occhiata, ma più in basso puoi vedere che il supporto per lambda in VC10 è solo parziale, motivo per cui stai ricevendo l'errore di sintassi – Chris

+0

link sembra elencare solo VS2012,13,15 – slyy2048