#include <functional>
#include <iostream>
class A{
public:
void fct(int a, int b){ std::cout << "A::fct " << a << ", " << b << std::endl; }
};
void plusF(int a, int b){std::cout << "plusF " << a << ", " << b << std::endl;}
int main(void) {
using namespace std::placeholders;
A a;
auto callF = std::bind(plusF, _1, 42);
auto callA = std::bind(&A::fct, &a, 42, _1);
callF(1);
callA(2);
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCmNsYXNzIEF7CnB1YmxpYzoKICAgIHZvaWQgZmN0KGludCBhLCBpbnQgYil7IHN0ZDo6Y291dCA8PCAiQTo6ZmN0ICIgPDwgYSA8PCAiLCAiIDw8IGIgPDwgc3RkOjplbmRsOyB9Cn07Cgp2b2lkIHBsdXNGKGludCBhLCBpbnQgYil7c3RkOjpjb3V0IDw8ICJwbHVzRiAiIDw8IGEgIDw8ICIsICIgPDwgYiA8PCBzdGQ6OmVuZGw7fQoKaW50IG1haW4odm9pZCkgewoJdXNpbmcgbmFtZXNwYWNlIHN0ZDo6cGxhY2Vob2xkZXJzOwogICAgQSBhOwoKICAgIGF1dG8gY2FsbEYgPSBzdGQ6OmJpbmQocGx1c0YsIF8xLCA0Mik7CiAgICBhdXRvIGNhbGxBID0gc3RkOjpiaW5kKCZBOjpmY3QsICZhLCA0MiwgXzEpOwoKICAgIGNhbGxGKDEpOwogICAgY2FsbEEoMik7Cgp9