Add execution tests of ARM EXT intrinsics
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / range-for14.C
blobf43e1abcde7324ab40c4b9a4ffb84865ed02914a
1 // Test for other range-based for loops with
2 // begin/end member functions
4 // { dg-do compile { target c++11 } }
6 //These should not be used
7 template<typename T> int *begin(T &t)
9     T::fail;
11 template<typename T> int *end(T &t)
13     T::fail;
16 //Test for defaults
18 struct default1
20     int *begin(int x); // { dg-message "note" }
21     int *end();
24 struct default2
26     int *begin(int x=0);
27     int *end();
30 struct default3
32     template <typename T> T *begin(); // { dg-message "note" }
33     int *end();
36 struct default4
38     template <typename T=int> T *begin();
39     int *end();
42 struct default5
44     template <typename T=int> T *begin(int x=0);
45     int *end();
48 void test1()
50   for (int x : default1()); // { dg-error "no matching function|note" }
51   for (int x : default2());
52   for (int x : default3()); // { dg-error "no matching function|note" }
53   for (int x : default4());
54   for (int x : default5());
57 //Inheritance tests
59 struct base_begin
61     int *begin(); // { dg-message "" }
64 struct base_end
66     int *end();
69 struct derived1 : base_begin, base_end
73 struct base_begin2 : base_begin
77 struct derived2 : base_begin, base_end, base_begin2 // { dg-warning "" }
81 struct base_begin3 : virtual base_begin
85 struct derived3 : virtual base_begin, base_end, base_begin3
89 void test2()
91   for (int x : derived1());
92   for (int x : derived2()); // { dg-error "is ambiguous" }
93   for (int x : derived3());