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