Похоже, лямбды не работают в классах ref в VS2010 - PullRequest
5 голосов
/ 25 января 2010

Одной из интересных новых функций 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 ++. Кто-нибудь знает, как заставить их работать в реф классах?

1 Ответ

2 голосов
/ 26 января 2010

Похоже, рассматривается в будущих версиях. В противном случае известный как: «Мы доберемся до него».

...