Одной из интересных новых функций C ++ в Visual Studio 2010 являются лямбда-выражения. Однако я не могу заставить их работать в управляемом классе.
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 = [](){ ; };
}
};
Мое лучшее предположение - то, что компилятор создает класс анонимной функции как класс друга, хотя я никогда не использую члены класса. Похоже, это означает, что лямбды вообще не могут использоваться в классах ref.
Я был так счастлив, когда прочитал, что VS2010 добавляет лямбда-выражения в C ++. Кто-нибудь знает, как заставить их работать в реф классах?