Lambdas似乎不适用于VS2010中的ref类

时间:2010-01-25 19:27:50

标签: lambda c++-cli c++11

Visual Studio 2010中一个很酷的新C ++功能是lambda表达式。但是,我无法让他们在托管类中工作。

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 = [](){ ; };
    }
};

我最好的猜测是编译器将匿名函数类创建为友元类,即使我从不使用类成员。这似乎意味着lambda不能在ref类中使用。

当我读到VS2010将lambda表达式添加到C ++时,我感到非常高兴。有人知道如何让他们在ref类中工作吗?

1 个答案:

答案 0 :(得分:2)

Looks like正在考虑将来的版本。否则称为:“我们会接受它。”