std :: function如何接受具有相同函数调用操作符的所有函数对象?

时间:2018-12-10 10:57:15

标签: c++ std-function function-object

我很好奇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
}

有人可以解释这怎么可能吗?

0 个答案:

没有答案