Является ли это единственным способом оценки пакета параметров без использования свертывания (поскольку это требует использования операторов)?
#include <iostream>
template<int ...Is, typename Function>
void eval(Function&& f)
{
// (f(Is)...);
auto op = [&f](int i){f(i); return 0;};
auto doNothing = [](auto...){};
doNothing(op(Is)...);
}
int main()
{
eval<0,1,2>([](int x){std::cout << x << "\n";});
}
По сути, я хочу сделать (f(Is)...)
, но по какой-то причине этозапрещено в C ++. Есть ли более элегантный способ, которым это может быть достигнуто, чем с помощью обходного пути, представленного выше?