Уничтожить, а затем построить новый объект, используя ту же переменную
Иногда приятно начать все сначала. В C ++ я могу использовать следующий простой маневр:
{
T x(31, Blue, false);
x.~T(); // enough with the old x
::new (&x) T(22, Brown, true); // in with the new!
// ...
}
По окончании действия деструктор снова запустится и все будет хорошо. (Давайте также скажем,T
немного особенный и не любит, когда его назначают, не говоря уже об обмене.) Но что-то подсказывает мне, что не всегда без риска все разрушить и попробовать снова. Есть ли возможный улов с этим подходом?