Например, у нас есть такая функция:
template <typename TYPE>
void construct_and_destruct(TYPE & object)
{
//...
}
Мы косяк вызвать конструктор и деструктор, как object.Type()
а также object.~Type()
(сейчас нет) (Почему? = С )
Для вызова конструктора нам может понравиться new(&object) TYPE()
, И я не знаю, как вызвать деструктор (не существует размещения delete
). Как это сделать?
Вы можете вызвать деструктор как:
object.~TYPE();
но это, вероятно, не то, что вы хотите, и подлежат двойному удалению.
Конструктор так же прост, как:
object = TYPE();
object.~TYPE()
а также object.~TYPE::TYPE()
оба правильны, я думаю. Звучит немного сомнительно, однако, чего вы пытаетесь достичь?