xref: /aosp_15_r20/external/clang/test/PCH/cxx-for-range.h (revision 67e74705e28f6214e480b399dd47ea732279e315)
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 Li void 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 Li void 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