假设我有一个接受两个参数的函数,
void f(int x, int y);
我希望绑定其中一个。我可以使用std::bind
,如下所示:
auto partiallyBoundF = std::bind(f, 10, _1);
partiallyBoundF
函数只接受一个参数,但是我可以用多个参数调用它。除了第一个参数之外的其他参数甚至不必是有意义的类型:
partiallyBoundF(20, 0);
partiallyBoundF(0, 44, -99, "Hello", 4.5, true, []{});
允许从bind
返回的对象传递额外参数的目的是什么?它允许调用在其他任何地方都会被拒绝的编译错误。
operator()
应该接受任何传递给它的参数,不论类型或数量。TR1 有类似的措辞。 - KnowItAllWannabeN = sizeof...(bound_args)
(绑定调用的参数数量)应该是一个有效的表达式,请参见 20.8.9.1.2/2 和 20.8.2/1。编辑:它并不排除任何其他调用方式。 - dypf(int, double, whatever)
是无效的)。 - dyp