#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);
}
Run Code Online (Sandbox Code Playgroud)
我用 g++ 9.3.0 和 clang++ 10.0.0 尝试了代码,它们都编译结束没有错误。
绑定结果和回调的类型是否相同?一个是std::function<void(int, void*)>,另一个是等于std::function<void(int)>什么?为什么我可以AddCallback()用不同的类型调用?
是什么设计目的或者技术限制导致返回值std::fetch_add变成了之前的值?