这是我的问题:
我定义一个函子:
我定义一个函子:
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);
结果是对的.
那么为什么呢请帮我理解.谢谢.