re PR middle-end/71387 (ICE in emit_move_insn, at expr.c:3418 with -Og)
[platform/upstream/gcc.git] / gcc / testsuite / g++.dg / cpp0x / range-for11.C
1 // Test for range-based for loop
2 // Test the loop with a custom iterator
3 // with begin/end as member functions
4
5 // { dg-do compile { target c++11 } }
6
7 struct iterator
8 {
9     int x;
10     explicit iterator(int v) :x(v) {}
11     iterator &operator ++() { ++x; return *this; }
12     int operator *() { return x; }
13     bool operator != (const iterator &o) { return x != o.x; }
14 };
15
16 namespace foo
17 {
18     struct container
19     {
20         int min, max;
21         container(int a, int b) :min(a), max(b) {}
22
23         iterator begin()
24         {
25             return iterator(min);
26         }
27         iterator end()
28         {
29             return iterator(max + 1);
30         }
31     };
32 }
33
34 int main()
35 {
36     foo::container c(1,4);
37     for (int it : c)
38         ;
39 }