2010-01-25 18 views
5

Một trong những tính năng mới của C++ trong Visual Studio 2010 là các biểu thức lambda. Tuy nhiên, tôi không thể khiến họ làm việc trong một lớp học được quản lý.Lambdas dường như không hoạt động trong các lớp ref trong 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 = [](){ ; }; 
    } 
}; 

Tôi đoán là trình biên dịch tạo lớp chức năng ẩn danh làm lớp bạn bè, mặc dù tôi không bao giờ sử dụng thành viên lớp học. Điều này dường như có nghĩa là lambdas không thể được sử dụng ở tất cả trong các lớp ref.

Tôi rất vui khi đọc VS2010 thêm các biểu thức lambda vào C++. Có ai biết làm thế nào để có được họ làm việc trong các lớp học ref?

+2

Để công bằng, lambda là một phần của tiêu chuẩn C++ 0x. C++/CLI là hoàn toàn khác nhau, và bạn không nên * thực sự * mong đợi tất cả mọi thứ để chuyển giao như thế. (Nhân tiện, có lẽ đó chỉ là phong cách của bạn, nhưng bạn không cần một cái trống rỗng '; 'trong lambda.) – GManNickG

Trả lời

2

Looks like nó đang được xem xét cho các phiên bản sau. Nếu không được gọi là: "Chúng tôi sẽ nhận được nó."

Các vấn đề liên quan