2010-01-25 13 views
5

Una delle fantastiche nuove funzionalità di C++ in Visual Studio 2010 sono espressioni lambda. Tuttavia, non riesco a farli funzionare all'interno di una classe gestita.Lambdas non sembra funzionare all'interno delle classi ref in VS2010

class UnmanagedClass { 
    void Foo() { 
     // Creating empty lambda within unmanaged class. 
     // This compiles fine. 
     auto lambda = [](){ ; }; 
    } 
}; 

ref class ManagedClass { 
    void Foo() { 
     // Creating empty lambda within managed class. 
     // This creates error C3809: 
     // A managed type cannot have any friend functions/classes/interfaces. 
     auto lambda = [](){ ; }; 
    } 
}; 

La mia ipotesi migliore è che il compilatore crea la classe funzione anonima come classe amico, anche se io non uso mai i membri della classe. Questo sembra significare che lambda non può essere usato affatto nelle classi ref.

Ero così felice quando ho letto che VS2010 aggiunge espressioni lambda al C++. Qualcuno sa come farli lavorare all'interno delle classi ref?

+2

Per essere onesti, i lambda fanno parte dello standard C++ 0x. C++/CLI è completamente diverso, e non dovresti * davvero * aspettarti che tutto si trasferisca così. (A proposito, forse è solo il tuo stile, ma non hai bisogno di un ''; 'nel lambda.) – GManNickG

risposta

2

Looks like viene considerato per le versioni future. Altrimenti noto come: "Ci arriveremo."

Problemi correlati