Я пытаюсь реализовать класс делегата, следуя примеру Херба Саттера. В этой статье есть разделы, дублирующие несколько шаблонов; один шаблон для количества аргументов в списке (пример 7, строки 41-59)1 а>. Я пытаюсь заменить это вариативным шаблоном.
void operator()() const {
for_each(begin(l_), end(l_), []( function<F> i) {
i();
});
}
template<typename... Ts>
void operator()(Ts... vs) const {
for_each(begin(l_), end(l_), [&, vs...]( function<F> i) //g++-4.6.1: expected ',' before '...' token; expected identifier before '...' token
{
i(vs...);
});
}
Я нашел этот ответ, но я думаю, что моя проблема в том, что vs не расширяется. Каков правильный способ сделать это?
template<typename... Ts> void operator()(Ts... vs) const { for(auto i = begin(l_); i != end(l_); ++i) { (*i)(vs...); } }
25.03.2012auto i : l_
:) 25.03.2012