#include <iostream>
#include <algorithm>
#include <list>
class Foo
{
int _m;
public:
Foo(int m): _m(m){}
friend bool operator==(const Foo& lhs, const Foo& rhs);
};
bool operator==(const Foo& lhs, const Foo& rhs)
{
return lhs._m == rhs._m;
}
int main()
{
Foo foo1{42};
Foo foo2{24};
std::list<Foo> lst;
lst.push_back(foo1);
lst.push_back(foo2);
auto it = std::find(lst.begin(), lst.end(), foo1);
if(it != lst.end())
std::cout << "Found!" << std::endl;
else
std::cout << "Not found!" << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8bGlzdD4KCmNsYXNzIEZvbwp7CiAgICBpbnQgX207CnB1YmxpYzoKICAgIEZvbyhpbnQgbSk6IF9tKG0pe30KICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9vJiBsaHMsIGNvbnN0IEZvbyYgcmhzKTsKfTsKCmJvb2wgb3BlcmF0b3I9PShjb25zdCBGb28mIGxocywgY29uc3QgRm9vJiByaHMpCnsKICAgIHJldHVybiBsaHMuX20gPT0gcmhzLl9tOwp9CgppbnQgbWFpbigpIAp7CiAgICBGb28gZm9vMXs0Mn07CiAgICBGb28gZm9vMnsyNH07CgogICAgc3RkOjpsaXN0PEZvbz4gbHN0OwogICAgbHN0LnB1c2hfYmFjayhmb28xKTsKICAgIGxzdC5wdXNoX2JhY2soZm9vMik7CiAgICBhdXRvIGl0ID0gc3RkOjpmaW5kKGxzdC5iZWdpbigpLCBsc3QuZW5kKCksIGZvbzEpOwogICAgaWYoaXQgIT0gbHN0LmVuZCgpKQogICAgICAgIHN0ZDo6Y291dCA8PCAiRm91bmQhIiA8PCBzdGQ6OmVuZGw7CiAgICBlbHNlCiAgICAgICAgc3RkOjpjb3V0IDw8ICJOb3QgZm91bmQhIiA8PCBzdGQ6OmVuZGw7Cn0K