Подтвердить что ты не робот

Преимущество отличает указатель на void * при использовании новых

stl_construct.h имеет следующую функцию:

template<typename _T1, typename _T2>
inline void
_Construct(_T1* __p, const _T2& __value)
{
   ::new(static_cast<void*>(__p)) _T1(__value);
}

Я хочу знать, почему нужно использовать __p to void*, есть ли какие-либо преимущества?

4b9b3361

Ответ 1

Он гарантирует, что вызывается оператор заданного назначения, а не любая перегрузка, добавленная в глобальное пространство имен по коду пользователя с подписью void* operator new(std::size_t, _T1*).

Ответ 2

Это гарантирует, что оператор-оператор потенциально _T1 * не будет выполняться без единого исполнения

Ответ 3

Он гарантирует, что любой void* operator new(size_t, _T1*); не мешает новому месту размещения, которое он пытается сделать.