1 #ifndef A_H 2 #define A_H 3 4 template <typename T> 5 struct A { 6 template <typename I> AA7 A(I i1, I i2) { 8 } AA9 A(double) {} AA10 A(double, double) {} AA11 A(double, int) {} AA12 A(int, double) {} 13 }; 14 15 template <typename T1, typename T2> fff(T2 * t)16T1 fff(T2* t) { 17 return T1(t, t); 18 } 19 ff(int i)20inline A<int> ff(int i) { 21 return fff<A<int>>(&i); 22 } 23 24 struct Aggregate { 25 int member; 26 }; 27 bool operator==(Aggregate, Aggregate) = delete; 28 29 #endif 30