Usos do destruidor = delete;
Considere a seguinte classe:
struct S { ~S() = delete; };
Em breve e para os fins da pergunta: não consigo criar instâncias deS
gostarS s{};
pois eu não poderia destruí-los.
Conforme mencionado nos comentários, ainda posso criar uma instância fazendoS *s = new S;
, mas não posso excluí-lo também.
Portanto, o único uso que posso ver para um destruidor excluído é algo como isto:
struct S {
~S() = delete;
static void f() { }
};
int main() {
S::f();
}
Ou seja, defina uma classe que exponha apenas várias funções estáticas e proíba qualquer tentativa de criar uma instância dessa classe.
Quais são os outros usos (se houver) de um destruidor excluído?