如何在没有 lambda 的 std::function 向量上调用 std::for_each?

问题描述 投票:0回答:1

我想要回调函数,存储在向量中,例如,

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

c++ stl
1个回答
0
投票

定义一个函数。这就是 lambda w/o 捕获的全部内容 - 一个没有名称的函数。

void Callback (std::function<void()> &func) { func(); }

std::vector<std::function<void()> xs{};
std::for_each(xs.begin(), xs.end(), Callback);
© www.soinside.com 2019 - 2024. All rights reserved.