#include <iostream>
#include <functional>
struct Lambda
{
int operator()(char a, float f)
{
std::cout << a << " " << f << std::endl;
return 1;
}
};
void command(std::function<int(char, float)> func)
{
int ret = func('a', 3.14f);
}
template <typename F>
void tcommand(F func)
{
func();
}
int main()
{
Lambda Obj;
command(std::bind<int>(Obj, std::placeholders::_1, std::placeholders::_2));
tcommand(std::bind<int>(Obj, 'b', 2.72f));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCnN0cnVjdCBMYW1iZGEKewoJaW50IG9wZXJhdG9yKCkoY2hhciBhLCBmbG9hdCBmKQoJewoJCXN0ZDo6Y291dCA8PCBhIDw8ICIgIiA8PCBmIDw8IHN0ZDo6ZW5kbDsKCQlyZXR1cm4gMTsKCX0KfTsKCnZvaWQgY29tbWFuZChzdGQ6OmZ1bmN0aW9uPGludChjaGFyLCBmbG9hdCk+IGZ1bmMpCnsKICAgIGludCByZXQgPSBmdW5jKCdhJywgMy4xNGYpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4Kdm9pZCB0Y29tbWFuZChGIGZ1bmMpCnsKCWZ1bmMoKTsKfQoKaW50IG1haW4oKQp7CglMYW1iZGEgT2JqOwoJY29tbWFuZChzdGQ6OmJpbmQ8aW50PihPYmosIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSwgc3RkOjpwbGFjZWhvbGRlcnM6Ol8yKSk7Cgl0Y29tbWFuZChzdGQ6OmJpbmQ8aW50PihPYmosICdiJywgMi43MmYpKTsKfQo=