// Header for PCH test cxx-for-range.cpp

struct S {
  int *begin();
  int *end();
};

struct T { };
char *begin(T);
char *end(T);

struct U { };
namespace std {
  char *begin(U);
  char *end(U);
}

void f() {
  char a[3] = { 0, 1, 2 };
  for (auto w : a)
    for (auto x : S())
      for (auto y : T())
        for (auto z : U())
          ;
}

template<typename A>
void g() {
  A a[3] = { 0, 1, 2 };
  for (auto &v : a)
    for (auto x : S())
      for (auto y : T())
        for (auto z : U())
          ;
}
