Điều gì sai với mã bên dưới? Nó được cho là tìm một phần tử trong danh sách các cấu trúc nếu đầu tiên của các bộ nhớ của cấu trúc == 0. Trình biên dịch phàn nàn về đối số lambda không thuộc kiểu Predicate.C++ find_if lambda
#include <iostream>
#include <stdint.h>
#include <fstream>
#include <list>
#include <algorithm>
struct S
{
int S1;
int S2;
};
using namespace std;
int main()
{
list<S> l;
S s1;
s1.S1 = 0;
s1.S2 = 0;
S s2;
s2.S1 = 1;
s2.S2 = 1;
l.push_back(s2);
l.push_back(s1);
list<S>::iterator it = find_if(l.begin(), l.end(), [] (S s) { return s.S1 == 0; });
}
tôi đã biên dịch mã của bạn với g ++ 4.6.3 và tất cả mọi thứ biên dịch đúng cách. Không có thông báo lỗi ở đây. Bạn đang sử dụng trình biên dịch nào? Có lẽ nó chưa hiểu lambdas. –
Tôi cũng biên dịch mã này (với VC10) và không có lỗi hoặc cảnh báo, nó hoạt động như mong đợi khi chạy. Bạn đang sử dụng trình biên dịch nào? – Agentlien
Bạn đang sử dụng trình biên dịch nào? – Default