Heim >Backend-Entwicklung >C++ >Wie implementiert man „make_unique' in C 11, wenn Ihr Compiler es nicht unterstützt?

Wie implementiert man „make_unique' in C 11, wenn Ihr Compiler es nicht unterstützt?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-01 10:25:02723Durchsuche

How to Implement `make_unique` in C  11 When Your Compiler Doesn't Support It?

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!

Stellungnahme:
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