1*4eefb451SRichard Trieu template <class T> 2*4eefb451SRichard Trieu struct iterator { Compareiterator3*4eefb451SRichard Trieu void Compare(const iterator &x) { } Checkiterator4*4eefb451SRichard Trieu friend void Check(iterator) {} 5*4eefb451SRichard Trieu }; 6*4eefb451SRichard Trieu 7*4eefb451SRichard Trieu template <class T = int> struct Box { 8*4eefb451SRichard Trieu iterator<T> I; 9*4eefb451SRichard Trieu testBox10*4eefb451SRichard Trieu void test() { 11*4eefb451SRichard Trieu Check(I); 12*4eefb451SRichard Trieu I.Compare(I); 13*4eefb451SRichard Trieu } 14*4eefb451SRichard Trieu }; 15