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:
template unique_ptr make_unique( Args&&&... args );
Der folgende Code stellt eine Implementierung von bereit make_unique:
template
std::unique_ptr make_unique(Args&&... args)
{
return std::unique_ptr(new T(std::forward(args)...));
}
Diese Implementierung verwendet die Funktion std::forward, um sicherzustellen, dass die Argumentweiterleitung für alle Arten von Argumenten korrekt erfolgt, einschließlich Referenzen und R-Wert-Referenzen.
Beachten Sie, dass, wenn Ihr Compiler C unterstützt 11, aber nicht die Funktion make_unique, können Sie diese Implementierung dennoch als Workaround verwenden. 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3