这里是我的问题: 我定义了一个函数对象:
class A {
public:
int operator()(int a, int b) const{
return a + b;
}
};
typedef function<int (int, int)> Fun;
然后我使用一个匿名函数对象来创建一个std::function对象,结果发现有些奇怪。这是我的代码:
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);
结果是正确的。 那么,为什么呢?帮我理解一下,谢谢。