Как вызвать деструктор типа в шаблоне?

Например, у нас есть такая функция:

template <typename TYPE>
void construct_and_destruct(TYPE & object)
{
//...
}

Мы косяк вызвать конструктор и деструктор, как object.Type() а также object.~Type() (сейчас нет) (Почему? = С )

Для вызова конструктора нам может понравиться new(&object) TYPE(), И я не знаю, как вызвать деструктор (не существует размещения delete). Как это сделать?

2

Решение

Вы можете вызвать деструктор как:

object.~TYPE();

но это, вероятно, не то, что вы хотите, и подлежат двойному удалению.

Конструктор так же прост, как:

object = TYPE();
3

Другие решения

object.~TYPE() а также object.~TYPE::TYPE() оба правильны, я думаю. Звучит немного сомнительно, однако, чего вы пытаетесь достичь?

1

По вопросам рекламы [email protected]