1 // { dg-do compile { target c++11 } } 2 3 struct X {}; 4 5 struct B { 6 int i; BB7 B (int _i) : i(_i) { } ~BB8 ~B () { i = 0; } 9 }; 10 11 template <typename T> 12 struct A : public B { AA13 A () : B(-1) { } ~AA14 ~A () { } 15 }; 16 17 template <typename T> 18 struct A<T*> : public B { 19 A () : B(-1) { } 20 A (int i) : A() { } 21 A (double b) : A(static_cast<int>(b)) { } 22 A (double b, double b2) : A(b2) { } 23 ~A () { } 24 }; 25 26 void f_A () { A<X*> a(2.0, 3.0); } 27 28 struct C { 29 C () { } 30 virtual ~C() { } 31 virtual int f () = 0; 32 }; 33 34 template <typename T> 35 struct D : public C { 36 int i; 37 D (int _i) : C(), i(_i) { } 38 }; 39 40 template <> 41 struct D<X> : public C { 42 int i; 43 D (int _i) : C(), i(_i) { } 44 D () : D(-1) { } 45 virtual ~D() { } 46 virtual int f () { return 0; } 47 }; 48 49 void f_D () { D<X>* d = new D<X>(); } 50 51 template <typename T> 52 struct E { 53 }; 54 55 template <> 56 struct E<int> { 57 int i; 58 E () : E(0) { } 59 E (int _i) : i(_i) { } 60 }; 61 62 void f_E () { E<int> e; } 63