1 // { dg-do assemble  }
2 // { dg-options "-Wctor-dtor-privacy" }
3 
4 class A {
5 };
6 
7 
8 class B { // { dg-warning "" } only private constructors
9 public:
10   void f();
11 
12 private:
13   B ();
14   B (const B&);
15 };
16 
17 
18 class C {  // { dg-warning "" } only private destructors
19 public:
20   void f();
21 
22 private:
23   ~C ();
24 };
25 
26 
27 class D { // { dg-warning "" } all member functions are private
28 private:
29   void f();
30 };
31 
32 
33 template <class T>
34 class X { // { dg-warning "" } only private destructors
35 private:
36   ~X ();
37 };
38 
39 template class X<int>;
40 template class X<double>;
41 
42 
43 template <class T>
44 class Y { // { dg-warning "" } only private constructors
45 private:
46   Y ();
47   Y (const Y&);
48 };
49 
50 
51 template <class T>
52 class Z { // { dg-warning "" } all member functions are private
53 private:
54   void f();
55 };
56