Heim >Backend-Entwicklung >C++ >Warum fehlt „std::make_unique' in C 11 und wie funktioniert Perfect Forwarding bei seiner Implementierung?
F: Warum fehlt die zentralisierte make_unique-Funktion in der C 11-Standardbibliothek?
Viele finden das Konstruktions-Boilerplate für eindeutige Zeiger unpraktisch. Zum Beispiel:
std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
Eine schlanke Funktion wie diese wäre vorzuziehen:
auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
F: Hier ist ein make_unique-Implementierungsversuch, aber etwas an std::forward scheint fehlerhaft zu sein. Was macht es und wie soll es verwendet werden?
template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }
A: Das Weglassen von std::make_unique in C 11 wurde als Versehen anerkannt: Es wurde in C 14 hinzugefügt.
Der std::forward
Das obige ist der detaillierte Inhalt vonWarum fehlt „std::make_unique' in C 11 und wie funktioniert Perfect Forwarding bei seiner Implementierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!