Bonjour,

Je cherche à coder une classe fournissant la strong guarantee en matière d'exception safety pour toutes ses opérations.
En postulant que l'opérateur d'affectation de la classe à laquelle appartient cette méthode fournit déjà la strong guarantee, je me suis dit qu'il suffisait de faire ça dans chaque méthode pour que la classe entière fournisse cette garantie :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
MaCLasse Moi = *this; // n'a aucun incidence sur this
//...    
// code qui modifie Moi et qui:
// - ne modifie aucun objet externe (que ce soit par paramètre de la fonction ou par singleton)
// - suit l'idiôme RAII pour qu'il n'y ait pas de fuite
//...
*this = Moi; // strong guarantee de l'opérateur '=', donc soit ça throw et c'est comme si rien ne s'était passé, soit ça passe
Ca m'a l'air ok (ou pas ?), mais je voulais savoir si c'était une pratique courante, ou si au contraire ça ne se fait jamais.
Votre avis ?

Merci.

PS: j'ai du mal à faire des recherches sur le sujet, car je tombe toujours sur des généralités ou sur l'écriture d'un opérateur d'affectation fournissant la strong guarantee (ce qui n'est pas le sujet).