2010-01-25 77 views
5

Visual Studio 2010中的一个很酷的新C++特性是lambda表达式。但是,我无法让他们在托管类中工作。Lambdas似乎无法在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 = [](){ ; }; 
    } 
}; 

我最好的猜测是编译器创建匿名函数类作为朋友类,即使我从来没有使用类成员。这似乎意味着在ref类中不能使用lambda表达式。

当我读到VS2010将lambda表达式添加到C++时,我非常高兴。有人知道如何让他们在裁判职位内工作吗?

+2

公平地说,lambda是C++ 0x标准的一部分。 C++/CLI是完全不同的,你不应该期待所有的东西都能像这样传输。 (顺便说一下,也许这只是你的风格,但你不需要在lambda中使用空的';')。 – GManNickG 2010-01-25 22:56:18

回答

2

Looks like它正在考虑的未来版本。否则被称为:“我们会去的。”