Maison > Article > développement back-end > Comment puis-je transférer correctement la propriété d'un « unique_ptr » vers un Lambda en C ?
Préserver la propriété dans un Lambda avec un pointeur unique
En C , un unique_ptr est conçu pour gérer exclusivement la propriété d'un seul objet. Lorsque vous tentez de capturer un unique_ptr dans une expression lambda, la propriété peut devenir ambiguë. Voici comment résoudre ce problème :
Initialement, une tentative de capture d'un unique_ptr comme référence dans un lambda peut échouer à la compilation. Pour transférer explicitement la propriété au lambda, C 14 a introduit la capture généralisée lambda :
auto getAction = [](std::unique_ptr<MyClass> psomething) { // Ownership now belongs to the lambda return [a = std::move(psomething)]() { a->do_something(); // psomething is released after this point }; };
Transfert de propriété avec implémentations de copie et de déplacement :
Dans votre code mis à jour, vous J'ai défini des fonctions de copie et de déplacement pour gérer différents types de références. Pour garantir un transfert de propriété approprié, tenez compte des points suivants :
Avec ces modifications, votre code devrait fonctionner comme prévu, préservant la propriété au sein du lambda expression.
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!