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