view gcc/testsuite/g++.dg/cpp1z/range-for1.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

// P0184R0: Generalizing the Range-Based For Loop
// { dg-do compile { target c++17 } }

struct A {
  int ar[4];
  int *begin() { return ar; }
  struct end_t {
    int *p;
    friend bool operator!= (int *p, end_t e) { return p != e.p; }
  };
  end_t end() { return { &ar[4] }; }
};

int main()
{
  A a { 1, 2, 3, 4 };
  int i = 1;
  for (auto x: a)
    if (x != i++)
      __builtin_abort ();
  if (i != 5)
    __builtin_abort ();
}