Ich habe gerade eine generische Objektfabrik geschrieben und die Boost-Präprozessor-Metabibliothek verwendet, um eine variable Vorlage zu erstellen (mit 2010 und ohne Unterstützung). Meine Funktion verwendet rval-Referenzen und std::forward
für eine perfekte Weiterleitung, und es hat mich zum Nachdenken gebracht ... Wenn C ++ 0X herauskommt und ich einen Standard-Compiler habe, würde ich dies mit echten variadischen Vorlagen tun. Wie aber würde ich std::forward
auf die Argumente zurückgreifen?
template <typename ...Params>
void f(Params... params) // how do I say these are rvalue reference?
{
y(std::forward(...params)); //? - I doubt this would work.
}
Die einzige Möglichkeit, die ich mir vorstellen kann, würde das manuelle Auspacken von ... Parametern erfordern, und ich bin auch noch nicht ganz da. Gibt es eine schnellere Syntax, die funktionieren würde?
quelle
void f(Params&& ...params)
void f(Ar&& ...arg)