57 lines · cpp
1// RUN: %clang_cc1 -verify -std=c++11 %s -fcxx-exceptions2 3class BadDtor {4 // A private, but nonetheless trivial, destructor.5 ~BadDtor() = default; // expected-note 9{{here}}6 friend class K;7};8void f() {9 BadDtor *p = new BadDtor[3]; // expected-error {{private destructor}}10 delete [] p; // expected-error {{private destructor}}11 const BadDtor &dd2 = BadDtor(); // expected-error {{private destructor}}12 BadDtor dd; // expected-error {{private destructor}}13 throw dd; // expected-error {{private destructor}}14}15struct V {16 V();17 BadDtor bd; // expected-note {{inaccessible destructor}}18};19V v; // expected-error {{deleted function}}20struct W : BadDtor { // expected-note {{inaccessible destructor}}21 W();22};23W w; // expected-error {{deleted function}}24struct X : BadDtor { // expected-error {{private destructor}}25 ~X() {}26};27struct Y {28 BadDtor dd; // expected-error {{private destructor}}29 ~Y() {}30};31struct Z : virtual BadDtor { // expected-error {{private destructor}}32 ~Z() {}33};34BadDtor dd; // expected-error {{private destructor}}35 36class K : BadDtor {37 void f() {38 BadDtor *p = new BadDtor[3];39 delete [] p;40 const BadDtor &dd2 = BadDtor();41 BadDtor dd;42 throw dd;43 44 {45 BadDtor x;46 goto dont_call_dtor;47 }48dont_call_dtor:49 ;50 }51 struct Z : virtual BadDtor {52 ~Z() {}53 };54 BadDtor dd;55 ~K();56};57