Как бы один звонил std :: вперед по всем аргументам в вариационной функции?
-
26-09-2019 - |
Вопрос
Я просто писал общий объект объекта и использовал мета-библиотеку Preprocessor Boost Preprocessor, чтобы сделать вариадийный шаблон (с использованием 2010 года, и он их не поддерживает). Моя функция использует RVal ссылки и std::forward
Чтобы сделать идеальную экспедицию, и это заставило меня думать ... когда C ++ 0x выходит, и у меня был стандартный компилятор, я бы сделал это с реальными вариационными шаблонами. Как хоть, я позвоню std::forward
на аргументы?
template <typename ...Params>
void f(Params... params) // how do I say these are rvalue reference?
{
y(std::forward(...params)); //? - I doubt this would work.
}
Только способ, которым я могу думать, что потребуют ручной распаковки ... Парми, и я еще не совсем там. Есть ли более быстрый синтаксис, который будет работать?
Решение
Вы бы сделали:
template <typename ...Params>
void f(Params&&... params)
{
y(std::forward<Params>(params)...);
}
То ...
В значительной степени говорит «Возьми то, что слева, и для каждого параметра шаблона распаковать его соответственно».