1 #ifndef A_H 2 #define A_H 3 4 template <typename T> 5 struct A { 6 template <typename I> 7 A(I i1, I i2) { 8 } 9 A(double) {} 10 A(double, double) {} 11 A(double, int) {} 12 A(int, double) {} 13 }; 14 15 template <typename T1, typename T2> 16 T1 fff(T2* t) { 17 return T1(t, t); 18 } 19 20 inline A<int> ff(int i) { 21 return fff<A<int>>(&i); 22 } 23 24 struct Aggregate { 25 int member; 26 }; 27 28 #endif 29