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; iteratoriterator10 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; containercontainer21 container(int a, int b) :min(a), max(b) {} 22 begincontainer23 iterator begin() 24 { 25 return iterator(min); 26 } endcontainer27 iterator end() 28 { 29 return iterator(max + 1); 30 } 31 }; 32 } 33 main()34int main() 35 { 36 foo::container c(1,4); 37 for (int it : c) 38 ; 39 } 40