Я просто писал универсальную объектную фабрику и использовал мета-библиотеку препроцессора boost для создания вариативного шаблона (с использованием 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.
}
Единственный способ, который я могу придумать, потребует ручной распаковки ... параметров, и я еще не совсем там. Есть ли более быстрый синтаксис, который подойдет?
источник
void f(Params&& ...params)
void f(Ar&& ...arg)