template <class T> struct iterator { void Compare(const iterator &x) { } friend void Check(iterator) {} }; template <class T = int> struct Box { iterator<T> I; void test() { Check(I); I.Compare(I); } }; // Force instantiation of Box<int> Box<> B;