Witam, mam pewien problem z przeciążeniem funkcji operator delete. Mianowicie, według książki "Język C++ Standardy kodowania" (s. 131):
(...) każde przeciążenie w klasie operatora
void* operator new(parametry)
musi być uzupełnione odpowiednim przeciążeniem operatora void operator delete(void*, parametry)
gdzie parametry to lista typów dodatkowych parametrów (z których pierwszy jest zawsze typu std::size_t). (...)
Czyli jeśli zdefiniuję
```cpp
void* X::operator new(size_t, int)
to muszę zdefiniować również
void X::operator delete(void*, size_t, int)
Jeśli jednak zrobię tak jak podano, to kompilator wyświetli ostrzeżenie o braku odpowiedniej funkcji operator delete i jeśli z konstruktora wyrzucony zostaje wyjątek, to pamięć nie zostaje zwolniona. Kiedy usunę z listy parametrów funkcji operator delete size_t wszystko działa jak należy. W związku z tym mam więc pytanie: to książka się myli, zmienił się standard w tej kwestii, czy ja po prostu czegoś nie rozumiem?
Z góry dziękuję za odpowiedź.