Maison  >  Article  >  développement back-end  >  Comment implémenter la fonction make_unique en C 11 ?

Comment implémenter la fonction make_unique en C 11 ?

DDD
DDDoriginal
2024-10-30 13:26:02601parcourir

How to Implement the make_unique Function in C  11?

Implémentation de la fonction make_unique en C 11

Malgré son omission chez certains compilateurs, la fonction make_unique reste un outil indispensable pour gérer la mémoire. Voici comment répliquer sa fonctionnalité en C 11 :

<code class="cpp">template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
    // Allocate the object on the heap with the provided arguments
    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}</code>

Cette implémentation utilise std::forward pour assurer une transmission parfaite des arguments au constructeur de l'objet géré par le pointeur unique.

Pour les compilateurs qui ne prennent pas en charge make_unique, tels que VC2012, cette implémentation personnalisée constitue une alternative efficace. Cependant, si votre compilateur prend en charge la réponse fournie par sasha.sochka, cette solution est plus robuste et gère également les tableaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn