Как бы один звонил std :: вперед по всем аргументам в вариационной функции?

StackOverflow https://stackoverflow.com/questions/2821223

Вопрос

Я просто писал общий объект объекта и использовал мета-библиотеку 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)...);
}

То ... В значительной степени говорит «Возьми то, что слева, и для каждого параметра шаблона распаковать его соответственно».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top