1*0ac2eb73SRichard Trieu template <class T> 2*0ac2eb73SRichard Trieu struct iterator { Compareiterator3*0ac2eb73SRichard Trieu void Compare(const iterator &x) { } Checkiterator4*0ac2eb73SRichard Trieu friend void Check(iterator) {} 5*0ac2eb73SRichard Trieu }; 6*0ac2eb73SRichard Trieu 7*0ac2eb73SRichard Trieu template <class T = int> struct Box { 8*0ac2eb73SRichard Trieu iterator<T> I; 9*0ac2eb73SRichard Trieu testBox10*0ac2eb73SRichard Trieu void test() { 11*0ac2eb73SRichard Trieu Check(I); 12*0ac2eb73SRichard Trieu I.Compare(I); 13*0ac2eb73SRichard Trieu } 14*0ac2eb73SRichard Trieu }; 15*0ac2eb73SRichard Trieu 16*0ac2eb73SRichard Trieu // Force instantiation of Box<int> 17*0ac2eb73SRichard Trieu Box<> B; 18