Làm cách nào để so sánh hai hàm lambda trong C++ (Visual Studio 2010)?Toán tử C++ lambda ==
std::function<void()> lambda1 = []() {};
std::function<void()> lambda2 = []() {};
bool eq1 = (lambda1 == lambda1);
bool eq2 = (lambda1 != lambda2);
Tôi nhận được lỗi biên dịch cho rằng toán tử == không thể truy cập được.
EDIT: Tôi đang cố gắng so sánh các phiên bản chức năng. Vì vậy lambda1 == lambda1 nên trả về true, trong khi lambda1 == lambda2 sẽ trả về false.
Bạn đang cố gắng so sánh kết quả đánh giá lambdas hay chính lambdas? –
Bạn có ý nghĩa gì với ==? Bạn kiểm tra bằng gì?Và nếu bạn không bao giờ biết, làm thế nào có thể trình biên dịch biết một mình, và chọn một toán tử == mà sẽ làm những gì bạn không biết? –
@Joshua: Anh ấy rõ ràng đang cố gắng so sánh bản thân lambdas. Đó là một điều hoàn toàn hợp lý để làm cho bất cứ ai đến từ một ngôn ngữ với đối tượng chức năng lớp đầu tiên "thích hợp", trong lambda hoặc bất kỳ ký pháp nào khác. Mặc dù những ngôn ngữ đó có thể hoặc có thể không đồng ý về việc 'labda1' và' lambda2' trong đoạn mã trên có bằng nhau hay không, vì vậy Stephane có thể đã chỉ ra lý do tại sao C++ 0x bỏ qua 'operator ==' cho lambdas. –