template <class T> class H { T h; public: H(const T &t) : h(t) {} }; template <class T> void g(H<T> e = 0) {} template <class T> void f(T t) { g<T>(t); } int main() { f(1); return 0; }