Раздел 12.5/4 [class.free]
:Какие функции для освобождения места размещения были введены?
Если результат поиска является неоднозначным или недоступен, или если поиска выбирает функцию размещения Deallocation, программа плохо сформирована.
Так, например, если мы пишем: функция открепление
class A
{
public:
void* operator new (std::size_t count, std::size_t msg, std::size_t mmsg);
void operator delete (void* ptr, std::size_t msg, std::size_t mmsg);
};
void* A::operator new (std::size_t sz, std::size_t msg, std::size_t mmsg){
std::printf("global op new called, message = %lu, %lu", msg, mmsg);
return std::malloc(sz);
}
void A::operator delete (void* ptr, std::size_t msg, std::size_t mmsg){
std::printf("global op new called, message = %lu, %lu", msg, mmsg);
}
Размещение никогда не будет вызван в качестве части оценки удаления выражения. Поэтому разумно спросить, для чего они были введены. Мы можем называть их только посредством ручного вызова на operator[](void*, std::size_t, std::size_t)
, который не является удобным.