Стандарт С++ в 12.4.2 гласит, что
[...] Адрес деструктора не должен приниматься. [...]
Однако, без каких-либо жалоб компилятором можно взять адрес оболочки вокруг деструктора класса, например:
struct Test {
~Test(){};
void destructor(){
this->~Test();
}
};
void (Test::*d)() = &Test::destructor;
Итак, какое обоснование заставляет не принимать адрес деструктора напрямую?