Heim > Backend-Entwicklung > C++ > Hauptteil

Wie implementiert man die Funktion „make_unique' in C 11 für Compiler ohne native Unterstützung?

DDD
Freigeben: 2024-10-28 02:18:30
Original
449 Leute haben es durchsucht

How to Implement the `make_unique` Function in C  11 for Compilers Lacking Native Support?

Implementieren der make_unique-Funktion in C 11

In C 11 wird die make_unique-Funktion zum Erstellen von unique_ptr-Objekten verwendet. Es bietet eine bequeme Möglichkeit, Speicher zuzuweisen und die Lebensdauer von Objekten zu verwalten. Für diejenigen, deren Compiler die Funktion make_unique nicht unterstützen, kann eine benutzerdefinierte Implementierung erstellt werden.

Um die Funktion make_unique zu schreiben, können wir den Konstruktor unique_ptr verwenden, der einen Rohzeiger als Argument verwendet. Der folgende Vorlagencode zeigt, wie die Funktion make_unique implementiert wird:

<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>
Nach dem Login kopieren

Diese Implementierung verwendet std::forward, um die Argumente an den T-Konstruktor zu übergeben und sicherzustellen, dass die perfekte Weiterleitung erhalten bleibt.

Für Compiler, die dies unterstützen, finden Sie in der Antwort von sasha.sochka eine ausgefeiltere Implementierung, die auch die Erstellung von unique_ptr-Objekten aus Arrays unterstützt. Wenn sich die Lösung von sasha.sochka jedoch nicht mit Ihrem Compiler kompilieren lässt, sollte die obige Implementierung effektiv funktionieren.

Das obige ist der detaillierte Inhalt vonWie implementiert man die Funktion „make_unique' in C 11 für Compiler ohne native Unterstützung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!