Вызов std::function в std::for_each

По сути, у меня есть следующий код:

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));

Можно ли в этих случаях обойтись без вспомогательных функций?

6
задан D_E 20 April 2012 в 17:24
поделиться