оператор delete принимает void *. Как часть тестовой программы я перегружен оператором удаления и обнаружил, что оператор удаления не принимает константный указатель.
Как ты это попробовал? Конечно, принимает константные указатели:
#include <memory>
int main() {
void* const px = 0;
delete px;
::operator delete(px);
}
Этот код верен, компилируется (хотя и с обоснованным предупреждением) и выполняется.
РЕДАКТИРОВАТЬ : чтение оригинальной статьи - вы говорите не о константном указателе, а указателе на const
, что является чем-то другим. Причина, почему это должно работать, описана там. Что касается того, почему это работает: другие сказали это.