1*67e74705SXin Li // Header for PCH test cxx-for-range.cpp 2*67e74705SXin Li 3*67e74705SXin Li struct S { 4*67e74705SXin Li int *begin(); 5*67e74705SXin Li int *end(); 6*67e74705SXin Li }; 7*67e74705SXin Li 8*67e74705SXin Li struct T { }; 9*67e74705SXin Li char *begin(T); 10*67e74705SXin Li char *end(T); 11*67e74705SXin Li 12*67e74705SXin Li namespace NS { 13*67e74705SXin Li struct U { }; 14*67e74705SXin Li char *begin(U); 15*67e74705SXin Li char *end(U); 16*67e74705SXin Li } 17*67e74705SXin Li using NS::U; 18*67e74705SXin Li f()19*67e74705SXin Livoid f() { 20*67e74705SXin Li char a[3] = { 0, 1, 2 }; 21*67e74705SXin Li for (auto w : a) 22*67e74705SXin Li for (auto x : S()) 23*67e74705SXin Li for (auto y : T()) 24*67e74705SXin Li for (auto z : U()) 25*67e74705SXin Li ; 26*67e74705SXin Li } 27*67e74705SXin Li 28*67e74705SXin Li template<typename A> g()29*67e74705SXin Livoid g() { 30*67e74705SXin Li A a[3] = { 0, 1, 2 }; 31*67e74705SXin Li for (auto &v : a) 32*67e74705SXin Li for (auto x : S()) 33*67e74705SXin Li for (auto y : T()) 34*67e74705SXin Li for (auto z : U()) 35*67e74705SXin Li ; 36*67e74705SXin Li } 37