我本质上有以下代码:
typedef std::function<void ()> fnGlobalChangeEvent;
typedef std::vector<fnGlobalChangeEvent> GlobalTriggers;
inline void ExecuteGlobal(fnGlobalChangeEvent ev)
{
ev();
}
GlobalTriggers triggers;
std::for_each(triggers.begin(), triggers.end(), std::bind(&ExecuteGlobal, _1));
在这里使用 ExecuteGlobal 感觉完全多余,但我找不到正确的语法来退出调用。
std::for_each(triggers.begin(), triggers.end(), ExecuteGlobal(_1));
std::for_each(triggers.begin(), triggers.end(), std::bind(_1));
两者都无法编译。
还有一个更复杂的情况:
typedef std::function<void (Zot&)> fnChangeEvent;
typedef std::vector<fnChangeEvent> Triggers;
inline void Execute(fnChangeEvent ev, Zot& zot)
{
ev(zot);
}
Triggers triggers;
std::for_each(triggers.begin(), triggers.end(), std::bind(&Execute, _1, zot));
在这些情况下是否可以不使用辅助功能?