Я только что написал общую фабрику объектов и использовал метабиблиотеку препроцессора 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.
}
Единственный способ, которым я могу придумать, - это распаковать вручную ... params, и я еще не совсем там. Есть ли более быстрый синтаксис, который будет работать?