Bonsoir !

J'ai créé une union, et j'ai maintenant besoin de définir un operator=(&&), voici la première chose qui m'est passée par la tête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
auto Parser::ParseResult::operator=(ParseResult&& other) -> ParseResult&
{
    (*this).~ParseResult();
    new (this) ParseResult(std::move(other));
    return *this;
}
Sachant qu'à priori, ni le destructeur ni le constructeur par déplacement ne peuvent balancer d'exception (destruction/déplacement soit de std::string, soit de shared_ptr, soit de types primitifs).

Quelles critiques peut-on adresser à une telle implémentation ? D'une part dans ce cas précis, d'autre part dans un cas plus général ?

Si vous avez besoin d'un code plus complet, je peux éventuellement essayer d'extraire les parties pertinentes.

Merci d'avance pour vos réponses !