Оператор присваивания со ссылочными элементами

Является ли это допустимым способом создания оператора присваивания с элементами, которые являются ссылками?

#include <new>

struct A
{
    int &ref;
    A(int &Ref) : ref(Ref) { }
    A(const A &second) : ref(second.ref) { }
    A &operator =(const A &second)
    {
        if(this == &second)
            return *this;
        this->~A();
        new(this) A(second);
        return *this;
    }
}

Кажется, он компилируется и работает нормально , но из-за тенденции C ++ проявлять неопределенное поведение, когда его меньше всего ожидали, и всех людей, которые говорят, что это невозможно, я думаю, что есть кое-что, что я пропустил. Я что-то пропустил?

32
задан Dani 26 October 2011 в 16:57
поделиться