1 // Test for range-based for loop 2 // Test the loop with a custom iterator 3 // with begin/end in std 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 struct container 17 { 18 int min, max; containercontainer19 container(int a, int b) :min(a), max(b) {} 20 }; 21 22 namespace std 23 { begin(container & c)24 iterator begin(container &c) 25 { 26 return iterator(c.min); 27 } 28 end(container & c)29 iterator end(container &c) 30 { 31 return iterator(c.max + 1); 32 } 33 } 34 main()35int main() 36 { 37 container c(1,4); 38 for (int it : c) // { dg-error "was not declared" } 39 { 40 } 41 } 42