Als «perfect-forwarding» getaggte Fragen


6
Vorteile der Verwendung von Forward
std::forwardWird bei perfekter Weiterleitung verwendet, um die benannten rWertreferenzen t1und t2unbenannte rWertreferenzen zu konvertieren . Was ist der Zweck davon? Wie würde sich das auf die aufgerufene Funktion auswirken, innerwenn wir t1& t2als lWerte belassen? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
make_unique und perfekte Weiterleitung
Warum gibt es std::make_uniquein der Standard-C ++ 11-Bibliothek keine Funktionsvorlage? ich finde std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); ein bisschen ausführlich. Wäre das Folgende nicht viel schöner? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Dies verbirgt das newschön und erwähnt den Typ nur einmal. Wie auch immer, hier ist mein Versuch einer …


1
Wie würde man std :: forward für alle Argumente in einer variadischen Funktion aufrufen?
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::forwardfür eine perfekte Weiterleitung, und es hat mich zum Nachdenken gebracht ... Wenn C ++ 0X herauskommt und ich einen Standard-Compiler habe, würde …

1
Kann ich std :: vector mit perfekter Weiterleitung der Elemente listeninitialisieren?
Ich bemerkte , dass aggregierte Liste initialisiert von std :: vector führt Initialisierung kopieren , wenn Bewegung mehr anwendbar ist. Gleichzeitig machen mehrere emplace_backs, was ich will. Ich konnte mir nur diese unvollständige Lösung für das Schreiben einer Vorlagenfunktion einfallen lassen init_emplace_vector. Es ist jedoch nur für nicht explizite Einzelwertkonstruktoren …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.