Можете ли вы чередовать переменные параметры на сайтах вызовов?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Можете ли вы чередовать переменные параметры на сайтах вызовов?

Сообщение Anonymous »

Можно ли чередовать параметры шаблона внутри сайтов вызова функций?
Я фактически хочу реализовать следующее, но не знаю как (псевдокод):

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»