我想要回调函数,存储在向量中,例如,
std::vector<std::function<void()> xs{};
std::for_each(xs.begin(), xs.end(), [](auto& func) { func(); });
但是如何在不使用 lambda 的情况下使代码正常工作呢?我尝试了以下方法,但无法编译:
std::vector<std::function<void()> xs{};
std::for_each(xs.begin(), xs.end(), &std::function<void()>::operator());
错误:
In template: called object type 'void (std::function<void ()>::*)() const' is not a function or function pointer
定义一个函数。这就是 lambda w/o 捕获的全部内容 - 一个没有名称的函数。
void Callback (std::function<void()> &func) { func(); }
std::vector<std::function<void()> xs{};
std::for_each(xs.begin(), xs.end(), Callback);