Re: user-defined op= for type with reference member
"Paul Bibbings" <paul.bibbings@gmail.com> wrote in message
news:87iq5pe056.fsf@gmail.com...
Since I have used the following in another post, can someone just
confirm (or otherwise) whether the following definition of a
user-defined op= for a type with a reference member is well defined?
class AType
{
public:
AType(int& i)
: i_(i)
{ }
// ...
AType& operator=(const AType& other)
{
if (this != &other)
{
this->~Atype();
new (this) AType(other);
}
return *this;
}
private:
int& i_;
};
According to my reading of the example given in [basic.life] ?3.8/7 I
believe that it is, in this instance (since the constructor doesn't
throw, except on bad_alloc).
Regards
Paul Bibbings
Attempting to use this trick to reseat a reference or destruct/re-construct
const members is UB IIRC, there was a thread about this a few months ago I
think.
/Leigh