template struct iterator { void Compare(const iterator &x) { } friend void Check(iterator) {} }; template struct Box { iterator I; void test() { Check(I); I.Compare(I); } };