Jak można wywołać STD:: forward na wszystkich argumentach w zmiennej funkcji?

Właśnie pisałem generic object factory i używałem meta-biblioteki preprocesora boost, aby stworzyć zmienny szablon(używając 2010 i nie obsługuje ich). Moja funkcja używa referencji rval i std::forward do perfekcyjnego przekierowania i dało mi to do myślenia...gdy C++0x wyjdzie I miałem standardowy kompilator, robiłbym to z prawdziwymi, zmiennymi szablonami. Jak jednak zadzwonić std::forward na argumenty?

template <typename ...Params>
void f(Params... params) // how do I say these are rvalue reference?
{
    y(std::forward(...params)); //? - I doubt this would work.
}

Jedyny sposób, jaki mogę wymyślić, wymagałby ręcznego rozpakowywania z ...params i jeszcze nie jestem tam. Czy istnieje szybsza składnia, która by działała?

Author: PraAnj, 2010-05-12

1 answers

Zrobiłbyś:

template <typename ...Params>
void f(Params&&... params)
{
    y(std::forward<Params>(params)...);
}

... w zasadzie mówi "Weź to, co jest po lewej stronie, i dla każdego parametru szablonu rozpakuj go odpowiednio."

 169
Author: GManNickG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-12 17:36:34