Implémentation personnalisée de make_unique en C 11
make_unique est une fonction utilitaire introduite en C 14 pour créer un objet unique_ptr avec une instance allouée dynamiquement . Ceci est utile lorsqu'un pointeur brut n'est pas souhaité et qu'une gestion de la propriété est nécessaire. Cependant, si votre compilateur ne prend pas en charge make_unique, il peut être facilement implémenté à l'aide d'une fonction de modèle personnalisée.
Pour écrire make_unique, la déclaration de modèle suivante est utilisée :
<code class="cpp">template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args );</code>
Ce modèle prend un type T et un nombre variable d'arguments Args. L'implémentation suivante crée un objet unique_ptr avec une nouvelle instance T construite à l'aide des arguments fournis :
<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>
Le std::forward
Cette implémentation personnalisée de make_unique imite le comportement de la version standard, vous permettant de créer des objets unique_ptr en C 11 environnements où make_unique n'est pas pris en charge.
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!