У меня есть последовательность объектов std :: function (очень примитивная форма сигнальной системы).Существует ли стандартная (в C ++ 0x) функция или функтор, который будет вызывать данную функцию std :: function?Сейчас я использую
std::for_each(c.begin(), c.end(),
std::mem_fn(&std::function<void ()>::operator()));
ИМХО, это std::mem_fn(&std::function<void ()>::operator())
безобразно.Я хотел бы иметь возможность написать
std::for_each(c.begin(), c.end(), funcall);
Есть ли такой funcall
?Альтернативно, я могу реализовать функцию
template<typename I>
void callInSequence(I from, I to)
{
for (; from != to; ++from) (*from)();
}
Или, возможно, мне придется использовать систему сигналов / слотов, такую как Boost :: Signals, но у меня есть ощущение, что это излишнее (мне не нужна многопоточностьподдержка здесь, все std::function
строятся с использованием std :: bind).