// Build don't link: template <class T> struct C { template <class U> void f(U); // OK template <class V = int> struct I {}; // OK template <class W = int> void h(W); // ERROR - default argument template <class Y> void k(Y); }; template <class T> template <class U = double> void C<T>::f(U) {} // ERROR - default argument template <class X = void*> void g(X); // ERROR - default argument template <class T = double> template <class Y> void C<T>::k(Y) {} // ERROR - default argument