PR c++/85765 - SFINAE and non-type default template arg.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / range-for20.C
blobeb3cfe7369920aa8b64623427aca96617d90bff3
1 // PR c++/49834
2 // PR c++/50020
3 // { dg-do compile { target c++11 } }
5 struct A
7   template <typename T> T get_value() const;
8 };
10 struct B {
11   A first, second;
14 struct C
16   B* begin() const;
17   B* end() const;
20 template <typename Ret>
21 struct D
23   Ret f(const C &p)
24   {
25     for (const B &i: p)         // OK
26       i.second.get_value<int>();
27     for (const auto &i: p)      // ERROR
28       i.second.get_value<int>();
29     return Ret(0);
30   }
33 void g()
35   D<int>().f(C());