3 template <class T> struct Z {
4 typedef typename T::x xx;
6 template <class T> typename Z<T>::xx f(void *, T);
7 template <class T> void f(int, T);
10 f(1, a); // If the implementation rules out the first overload
11 // because of the invalid conversion from int to void*,
12 // the error instantiating Z<A> will be avoided