Сообщение Re[8]: хитрая конструкция от 06.03.2015 15:14
Изменено 06.03.2015 15:15 Кодт
Здравствуйте, Hard_Club, Вы писали:
X>>да, использование лямбды тут совершенно необосновано.
H_C>а как можно без лямбды?
Да любым способом утилизировать произвольное количество аргументов.
X>>да, использование лямбды тут совершенно необосновано.
H_C>а как можно без лямбды?
Да любым способом утилизировать произвольное количество аргументов.
void devnull(int... args) {}
#define CALL(expr) ( (expr), void(), 0 ) // выполняет выражение, возможно, типа void, и возвращает int 0
template<class F, class... Xs>
void each(F f, Xs&&... xs)
{
devnull( CALL(f(xs))... );
(void) std::initializer_list<int> { CALL(f(xs))... };
int nulls[] = { CALL(f(xs))... };
}
Re[8]: хитрая конструкция
Здравствуйте, Hard_Club, Вы писали:
X>>да, использование лямбды тут совершенно необосновано.
H_C>а как можно без лямбды?
Да любым способом утилизировать произвольное количество аргументов.
X>>да, использование лямбды тут совершенно необосновано.
H_C>а как можно без лямбды?
Да любым способом утилизировать произвольное количество аргументов.
void devnull(...) {}
#define CALL(expr) ( (expr), void(), 0 ) // выполняет выражение, возможно, типа void, и возвращает int 0
template<class F, class... Xs>
void each(F f, Xs&&... xs)
{
devnull( CALL(f(xs))... );
(void) std::initializer_list<int> { CALL(f(xs))... };
int nulls[] = { CALL(f(xs))... };
}