Una de las nuevas características geniales de C++ en Visual Studio 2010 son las expresiones lambda. Sin embargo, no puedo hacer que funcionen dentro de una clase administrada.Las lambdas no parecen funcionar dentro de las clases de ref en 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 = [](){ ; };
}
};
Mi mejor conjetura es que el compilador crea la clase de función anónima como una clase de amigo, a pesar de que nunca uso miembros de la clase. Esto parece significar que lambdas no se puede usar en absoluto dentro de las clases de ref.
Estaba tan feliz cuando leí que VS2010 agrega expresiones lambda a C++. ¿Alguien sabe cómo hacer que trabajen dentro de las clases de ref?
Para ser justos, los lambda son parte del estándar C++ 0x. C++/CLI es totalmente diferente, y no debería * realmente * esperar que todo se transfiera así. (Por cierto, tal vez es solo tu estilo, pero no necesitas un ';' vacío en la lambda). – GManNickG