【发布时间】:2020-10-23 23:15:24
【问题描述】:
#include <iostream>
#include <functional>
using callback = std::function<void(int, void*)>;
void AddCallback(callback cb) {}
void foo(int i) {}
int main() {
auto f = std::bind(&foo, std::placeholders::_1);
AddCallback(f);
}
我用 g++ 9.3.0 和 clang++ 10.0.0 尝试了代码,它们都编译结束没有错误。
绑定结果和回调的类型是否相同?一个是std::function<void(int, void*)>,另一个等于std::function<void(int)>?为什么我可以调用不同类型的AddCallback()?
【问题讨论】: