#ifndef A_H #define A_H template struct A { template A(I i1, I i2) { } A(double) {} A(double, double) {} A(double, int) {} A(int, double) {} }; template T1 fff(T2* t) { return T1(t, t); } inline A ff(int i) { return fff>(&i); } struct Aggregate { int member; }; bool operator==(Aggregate, Aggregate) = delete; #endif