Я просто писал общий объект factory и использовал мета-библиотеку препроцессора boost для создания вариационного шаблона (с использованием 2010 года, и он не поддерживает их). Моя функция использует ссылки rval и std::forward
для идеальной пересылки, и это заставило меня задуматься... когда С++ 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.
}
Единственный способ, о котором я могу думать, потребует ручной распаковки... params, и я еще не совсем там. Есть ли более быстрый синтаксис, который будет работать?