#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));
}
