1// PR c++/49834
2// PR c++/50020
3// { dg-do compile { target c++11 } }
4
5struct A
6{
7  template <typename T> T get_value() const;
8};
9
10struct B {
11  A first, second;
12};
13
14struct C
15{
16  B* begin() const;
17  B* end() const;
18};
19
20template <typename Ret>
21struct D
22{
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  }
31};
32
33void g()
34{
35  D<int>().f(C());
36}
37