#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
class A
{
int m_;
public:
A(int m) : m_(m) {}
int f() const { return m_; }
};
int main() {
std::vector<A> vec{1, 2, 5, 3, 4};
using namespace std::placeholders;
A& max = *std::max_element(begin(vec), end(vec)
, std::bind(
&std::less<int>::operator()
, std::less<int>()
, std::bind(&A::f, _1)
, std::bind(&A::f, _2)
)
);
std::cout << max.f() << '\n';
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KCmNsYXNzIEEKewoJaW50IG1fOwoJCnB1YmxpYzoKCUEoaW50IG0pIDogbV8obSkge30KCQoJaW50IGYoKSBjb25zdCB7IHJldHVybiBtXzsgfQp9OwoKCmludCBtYWluKCkgewoJc3RkOjp2ZWN0b3I8QT4gdmVjezEsIDIsIDUsIDMsIDR9OwoJdXNpbmcgbmFtZXNwYWNlIHN0ZDo6cGxhY2Vob2xkZXJzOwoJQSYgbWF4ID0gKnN0ZDo6bWF4X2VsZW1lbnQoYmVnaW4odmVjKSwgZW5kKHZlYykKCQksIHN0ZDo6YmluZCgKCQkJJnN0ZDo6bGVzczxpbnQ+OjpvcGVyYXRvcigpCgkJCSwgc3RkOjpsZXNzPGludD4oKQoJCQksIHN0ZDo6YmluZCgmQTo6ZiwgXzEpCgkJCSwgc3RkOjpiaW5kKCZBOjpmLCBfMikKCQkpCgkpOwoJc3RkOjpjb3V0IDw8IG1heC5mKCkgPDwgJ1xuJzsKfQ==