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éplacement implicite et l'affectation Les opérateurs peuvent être générés dans les conditions suivantes :
La décision de ne pas inclure le déplacement par défaut Les implémentations constructeur/affectation dans les premières versions étaient 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3