// PR c++/51547
// { dg-do compile { target c++11 } }

template <class T>
struct vector
{
  T*
  begin()
  { return &member; }

  const T*
  begin() const
  { return &member; }

  T member;
};

struct Bar {
  int x;
};

struct Foo {
  const vector<Bar>& bar() const {
    return bar_;
  }

  vector<Bar> bar_;
};

template <class X>
struct Y {
  void foo() {
    Foo a;
    auto b = a.bar().begin();
    auto&& c = b->x;
  }
};

template <class X>
void foo() {
  Foo a;
  auto b = a.bar().begin();
  auto&& c = b->x;
}

int main() {
  Y<int> p;
  p.foo();
  foo<int>();
}
