Я фактически хочу реализовать следующее, но не знаю как (псевдокод):
Код: Выделить всё
template
void foo(const Things *things)
{
static_assert(sizeof...(indices) == sizeof...(Ts));
constexpr n = sizeof...(Ts);
bar(
indices[0], parse(things[0]),
indices[1], parse(things[1]),
...
indices[n-1], parse(things[n-1]));
}
Код: Выделить всё
template
void foo(const Things *things)
{
static_assert(sizeof...(indices) == sizeof...(Ts));
constexpr n = sizeof...(Ts);
bar(
indices[0], indices[1], ..., indices[n-1],
parse(things[0]),
parse(things[1]),
...
parse(things[n-1]));
}
Код: Выделить всё
template
decltype(auto) swizzle()
{
return Func();
}
template
decltype(auto) swizzle(size_t i0, T0 &&t0)
{
return Func(i0, std::forward(t0));
}
template
decltype(auto) swizzle(size_t i0, size_t i1, T0 &&t0, T1 &&t1)
{
return Func(i0, std::forward(t0), i1, std::forward(t1));
}
Подробнее здесь: https://stackoverflow.com/questions/704 ... call-sites