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