Benutzerdefinierte Implementierung von make_unique in C 11
make_unique ist eine in C 14 eingeführte Dienstprogrammfunktion zum Erstellen eines unique_ptr-Objekts mit einer dynamisch zugewiesenen Instanz . Dies ist nützlich, wenn ein Rohzeiger nicht erwünscht ist und eine Eigentumsverwaltung erforderlich ist. Wenn Ihr Compiler jedoch make_unique nicht unterstützt, kann es einfach mithilfe einer benutzerdefinierten Vorlagenfunktion implementiert werden.
Um make_unique zu schreiben, wird die folgende Vorlagendeklaration verwendet:
<code class="cpp">template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args );</code>
Diese Vorlage benötigt ein Typ T und eine variable Anzahl von Argumenten Args. Die folgende Implementierung erstellt ein unique_ptr-Objekt mit einer neuen T-Instanz, die mithilfe der bereitgestellten Argumente erstellt wurde:
<code class="cpp">template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }</code>
Das std::forward
Diese benutzerdefinierte Implementierung von make_unique ahmt das Verhalten der Standardversion nach und ermöglicht Ihnen die Erstellung von unique_ptr-Objekten in C 11 Umgebungen, in denen make_unique nicht unterstützt wird.
Das obige ist der detaillierte Inhalt vonWie implementiert man „make_unique' in C 11 für eine verbesserte Eigentumsverwaltung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!