9
这里是我的问题: 我定义了一个函子:将匿名函数对象传递给std :: function?
class A {
public:
int operator()(int a, int b) const{
return a + b;
}
};
typedef function<int (int, int)> Fun;
然后我用一个匿名函子来创建一个std ::函数对象,我觉得有些奇怪。这里是我的代码:
Fun f(A());
f(3, 4);
不幸的是这是错的。该错误信息是:
error: invalid conversion from ‘int’ to ‘A (*)()’ [-fpermissive]
error: too many arguments to function ‘Fun f(A (*)())’
但是,当我改变我的代码如下:
A a;
Fun f(a);
f(3, 4);
或
Fun f = A();
f(3, 4);
结果是正确的。 那么,为什么呢?请帮助我理解它。谢谢。
你打败了我。最令人烦恼的解析问题的确如此。 – 2014-12-02 14:47:51
有时候,计算机科学中的术语会以误导的方式命名。这不是其中之一。 – Yakk 2014-12-02 18:15:20