Почему новый оператор может возвращать * void для каждого типа указателя?
В C ++ запрещено присваивать указатель void * любому целочисленному указателю без явного приведения. Это требует использования static_cast.
Но что с этим:
int* iptr = new int;
Я знаю, что новый оператор определяется следующим образом:
void* operator new(size_t);
Как C ++ справляется с этим? Я знаю, что это основной вопрос, но важный. Я также знаю, что код низкого уровня должен использовать void. Но как это назначение может быть законным? iptr - это указатель на int, а new возвращает указатель на void, который должен вызвать сообщение типа «ошибка: недопустимое преобразование из« void * »в« int * ’[-fpermissive]».