defaulted-private-dtor.cpp [plain text]
class BadDtor {
~BadDtor() = default; friend class K;
};
void f() {
BadDtor *p = new BadDtor[3]; delete [] p; const BadDtor &dd2 = BadDtor(); BadDtor dd; throw dd; }
struct V {
V();
BadDtor bd; };
V v; struct W : BadDtor { W();
};
W w; struct X : BadDtor { ~X() {}
};
struct Y {
BadDtor dd; ~Y() {}
};
struct Z : virtual BadDtor { ~Z() {}
};
BadDtor dd;
class K : BadDtor {
void f() {
BadDtor *p = new BadDtor[3];
delete [] p;
const BadDtor &dd2 = BadDtor();
BadDtor dd;
throw dd;
{
BadDtor x;
goto dont_call_dtor;
}
dont_call_dtor:
;
}
struct Z : virtual BadDtor {
~Z() {}
};
BadDtor dd;
~K();
};