3
4

1 回答 1

1

bind函数返回一个双参数仿函数,因为您将构造函数的第三个和第四个参数绑定到占位符值_1_2. 但是,您将结果存储在零参数function对象中。

我找到了六年前的参考资料,解释说绑定函数时不能省略参数,即使它们是用默认值声明的

我认为你有三个选择:

  1. int在调用中提供实际值bind而不是占位符。
  2. 更改 of 的声明f以指示它存储一个双参数函数,然后在调用它时始终提供这两个值。
  3. 将最后两个参数绑定到variables。请参阅Boost.Lambda 文档中的延迟常量和变量。然后,您可以将这些变量设置为与构造函数声明的默认值相同的默认值。要使用默认值,什么也不做。要指定非默认值,请在调用之前为这些变量赋值f

最后一个选项可能只会使您的代码更难阅读而没有太多好处,因此请改用前两个选项之一。

于 2011-03-16T23:10:04.550 回答