Dans les premières versions de la norme C 11, la génération implicite de constructeurs de déplacement et d'opérateurs d'affectation était un sujet de débat. Cela a conduit à des modifications dans les versions ultérieures, entraînant le comportement suivant dans les compilateurs actuellement disponibles :
Depuis la version de novembre de la norme C (N3225), les constructeurs de déplacements implicites et l'affectation Les opérateurs peuvent être générés dans les conditions suivantes :
La décision de ne pas inclure les implémentations de constructeur/affectation de déplacement par défaut dans les premières versions était le résultat de préoccupations concernant le potentiel de confusion et de comportement inattendu. Cependant, les révisions ultérieures ont résolu ces problèmes en resserrant les conditions de génération de mouvements implicites.
Si vous cherchez un moyen d'utiliser la sémantique de déplacement sans écrire de constructeurs/opérateurs d'affectation explicites , vous pouvez utiliser la [macro de GManNickG](https://stackoverflow.com/a/12316884/8674521). Cette macro génère la sémantique de déplacement nécessaire pour votre classe.
En implémentant la sémantique de déplacement, vous pouvez également refuser de fournir une fonction de membre d'échange.
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!