La bibliothèque standard C 11 n'a pas de modèle de fonction std::make_unique, ce qui laisse les développeurs écrire du code détaillé pour créer pointeurs uniques. Prenons l'exemple suivant :
std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
Pour atténuer cette verbosité, certains développeurs ont proposé une fonction make_unique :
auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
Cette syntaxe masque l'opérateur new et ne mentionne le type qu'une seule fois.
Cependant, la mise en œuvre d’une telle fonction nécessite de comprendre les subtilités d’un transfert parfait. Plus précisément, l'expression std::forward:
std::forward<Args>(args)...
implique les opérations suivantes :
En résumé, std::forward<Args>(args)... permet une transmission parfaite des arguments aux constructeurs.
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!