Neuerstellung der make_unique-Funktion in C 11
Der C 11-Standard führt eine leistungsstarke Funktion, make_unique, zum Erstellen eindeutiger Zeiger ein. Bei einigen kann es jedoch vorkommen, dass ihr Compiler diese Funktion nicht unterstützt. Dieser Artikel bietet eine Problemumgehung zum Implementieren von make_unique in C 11.
Gemäß der Frage lautet der Prototyp der make_unique-Funktion:
<code class="cpp">template< class T, class... Args > unique_ptr<T> make_unique( Args&&&... args );</code>
Der folgende Code stellt eine Implementierung von make_unique bereit:
<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>
Diese Implementierung verwendet std::forward<> Funktion, um sicherzustellen, dass die Argumentweiterleitung für alle Arten von Argumenten, einschließlich Referenzen und R-Wert-Referenzen, korrekt erfolgt.
Beachten Sie, dass Sie diese Implementierung dennoch als Problemumgehung verwenden können, wenn Ihr Compiler C 11, aber nicht die Funktion make_unique unterstützt. Wenn Sie Zugriff auf einen Compiler haben, der C 14 oder höher unterstützt, können Sie alternativ einfach die Standardfunktion std::make_unique für diesen Zweck nutzen.
Das obige ist der detaillierte Inhalt vonWie implementiert man „make_unique' in C 11, wenn Ihr Compiler es nicht unterstützt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!