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