/cp
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / range-for5.C
blobbf044068ba6bf1ad4099269cdde31a3781ca3193
1 // Test for errors in range-based for loops
3 // { dg-do compile { target c++11 } }
5 struct container
7 };
9 int *begin(const container &c)
11   return 0;
14 int end(const container &c) //Ops! wrong type
16   return 0;
20 struct Implicit
22   Implicit(int x)
23   {}
25 struct Explicit
27   explicit Explicit(int x)
28   {}
31 void test1()
33   container c;
34   for (int x : c) // { dg-error "inconsistent|conversion" }
35     ;
37   int a[2] = {1,2};
38   for (Implicit x : a)
39     ;
40   for (Explicit x : a) // { dg-error "conversion" }
41     ;
42   for (const Implicit &x : a)
43     ;
44   for (Implicit &&x : a)
45     ;
47   //Check the correct scopes
48   int i;
49   for (int i : a)               // { dg-message "previously declared" }
50   {
51     int i;                      // { dg-error "redeclaration" }
52   }