Właśnie pisałem generyczną fabrykę obiektów i korzystałem z meta-biblioteki preprocesora boost, aby stworzyć szablon wariadyczny (używając 2010 i nie obsługuje ich). Moja funkcja korzysta z referencji rval i std::forward
aby wykonać doskonałe przekazywanie, i pomyślałem ... kiedy pojawi się C ++ 0X i mam standardowy kompilator, zrobiłbym to z prawdziwymi szablonami wariadycznymi. Jak jednak miałbym odwołać std::forward
się do argumentów?
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, o którym mogę pomyśleć, wymagałby ręcznego rozpakowania ... parametrów, a ja też jeszcze nie jestem. Czy istnieje szybsza składnia, która działałaby?
c++
c++11
variadic-templates
rvalue-reference
perfect-forwarding
Edward Strange
źródło
źródło
void f(Params&& ...params)
void f(Ar&& ...arg)