// PR c++/49834 | |
// PR c++/50020 | |
// { dg-do compile { target c++11 } } | |
struct A | |
{ | |
template <typename T> T get_value() const; | |
}; | |
struct B { | |
A first, second; | |
}; | |
struct C | |
{ | |
B* begin() const; | |
B* end() const; | |
}; | |
template <typename Ret> | |
struct D | |
{ | |
Ret f(const C &p) | |
{ | |
for (const B &i: p) // OK | |
i.second.get_value<int>(); | |
for (const auto &i: p) // ERROR | |
i.second.get_value<int>(); | |
return Ret(0); | |
} | |
}; | |
void g() | |
{ | |
D<int>().f(C()); | |
} |