У меня есть класс Data, который может содержать указатель на объект.Я хочу иметь возможность позже вызывать деструктор вручную, для чего мне нужно, чтобы его адрес хранился в переменной, но кажется, что взятие адреса конструктора / деструктора запрещено.Есть ли способ обойти это?
struct Data {
union {
long i;
float f;
void* data_ptr;
} _data;
std::type_index _typeIndex;
void (*_destructor_ptr)();
template<typename T>
void Init() {
if constexpr (std::is_integral<T>::value) {
//
}
else if constexpr (std::is_floating_point<T>::value) {
//
}
else {
_data.data_ptr = new T;
_typeIndex = std::type_index(typeid(T));
_destructor_ptr = &T::~T; // << -- can't do this
}
}