// Build don't link: // GROUPS passed templates overloading template<class T> class Vector { }; template<class T> struct Sort { static void sort (Vector<typename T::foo> &); }; template<class T> void Sort<T>::sort (Vector<typename T::foo> &) { } struct whee { typedef int foo; }; void f (Vector<int> &vi) { Sort<whee>::sort (vi); }