Уничтожить, а затем построить новый объект, используя ту же переменную

Иногда приятно начать все сначала. В C ++ я могу использовать следующий простой маневр:

{

    T x(31, Blue, false);

    x.~T();                        // enough with the old x

    ::new (&x) T(22, Brown, true); // in with the new!

    // ...
}

По окончании действия деструктор снова запустится и все будет хорошо. (Давайте также скажем,T немного особенный и не любит, когда его назначают, не говоря уже об обмене.) Но что-то подсказывает мне, что не всегда без риска все разрушить и попробовать снова. Есть ли возможный улов с этим подходом?

Ответы на вопрос(6)

Ваш ответ на вопрос