VisualStudio 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类中工作吗?