我很好奇std::function
如何接受不同类型的对象,只要它们具有相同的函数调用操作符签名即可。例如,这两个结构显然是不相关的,但是,可以将相同的std :: function对象分配给这两个结构。
struct A {
int operator()(int a) {
return a;
}
};
struct B {
int operator()(int a) {
return a;
}
};
int main() {
function<int(int)> f;
f = B{}; //OK
f = A{}; //OK
}
有人可以解释这怎么可能吗?