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)16 T1 fff(T2* t) {
17   return T1(t, t);
18 }
19 
ff(int i)20 inline 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