#include <functional>
#include <iostream>
struct Test
{
void fnc(int & a) { ++a; }
};
int main()
{
typedef std::function<void(int)> Func;
int i = 0;
Test t;
Func f = std::bind(&Test::fnc, &t, std::ref(i));
//f(); //error C2064: term does not evaluate to a function taking 0 arguments
f(37); //Here I am forced to pass evidently unused int
std::cout << i;
}
我是否正确地使用它?调用std :: bind(ed)和std :: ref参数的函数
真的有必要通过一些随机int吗?
如果是这样,为什么呢? 是因为模板的魔力是有限的,而且我实际上必须将int传递给int函数,或者是为了某些目的而设计的? (例如,强制用户不在于怎么忘记了函数的声明已经样子?)
我用vs2012
谢谢你,Kerrek – relaxxx
有一个问题,是否可以通过ref传递,但在调用期间提供变量,而不是在绑定期间?或者,如果我不想复制整个对象(int这里是错误的例子)我使用占位符,但与指针? – relaxxx
@relaxxx:“g”不符合这些要求吗? (请注意我刚才所做的修正;现在需要一个*参考*) –