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