2010-01-25 54 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它正在考慮的未來版本。否則被稱爲:「我們會去的。」