struct F
{
int operator()(int a, int b) { return a - b; }
bool operator()(long a, long b) { return a == b; }
};
F f;
int x = 104;
bind<int>(f, _1, _1)(x); // f(x, x), i.e. zero
一些编译器在 bind(f, ...) 语法上有问题。出于可移植性的原因,支持表达上述内容的另一种方式:
boost::bind(boost::type<int>(), f, _1, _1)(x);
像上面一样,代码使用 boost::type 作为函数对象类型, 我知道在哪里包含 boost::type 实现?