Пересылать определенный диапазон аргументов в функцию с переменным числом - PullRequest
0 голосов
/ 07 сентября 2018

Есть ли способ std :: forward для определенного диапазона аргументов в функции с переменными числами? Например:

#include <iostream>

template<typename T>
    void test_simple(T v0,T v1)
{
    std::cout<<v0<<","<<v1<<std::endl;
}

template<typename... TARGS>
    void test_variadic(TARGS ...args)
{
    test_simple(std::forward<TARGS>(args)...); // Forward all arguments except for the first one?
}

int main(int argc,char *argv[])
{
    test_variadic(5.f,2.f,7.f);
    return EXIT_SUCCESS;
}

Я хочу, чтобы test_variadic перенаправлял только последние два аргумента в test_simple , чтобы вывод был "2.0,7.0".

1 Ответ

0 голосов
/ 07 сентября 2018

Использовать дополнительный параметр шаблона:

template <typename T, typename... Ts>
void test_variadic(T&& arg, Ts&&... args) {
    test_simple(std::forward<Ts>(args)...);
}

Таким образом, первый параметр не является частью переменной.

...