Ca manque de const uniquement dans la synthèse qui est sur le forum. Le code original est propre.
Si dans le sens A vers D, la conversion est problématique, elle l'est moins dans le ens inverse (D vers A) !
Code :
- struct D {};
- struct C { C(); C( const D& ); operator D() const; };
- struct B { B(); B( const C& ); operator C() const; };
- struct A { A(); A( const B& ); operator B() const; };
|
Le compilateur sait chainer deux conversions utilisateur :
Code :
- D d;
- B b( d );
- //B b = d ; ne passe pas !
|
Le compilateur ne sait pas chainer plus de deux conversions utilisateur :
Je peux admettre que multiplier les conversions implcites nuit à la lisibilité, mais j'ai du mal à comprendre pourquoi le comportement n'est pas symétrique.
---------------
Cordialement, Xterm-in'Hate...