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?
120
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
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