// { dg-require-effective-target c++11 } template <class,class> struct ST; template <class T> struct ST<T,T> {}; struct A { int f() &; char f() &&; }; template <class T> struct B { int f() &; char f() &&; }; int main() { A a; a.f(); A().f(); ST<decltype(a.f()), int>(); ST<decltype(A().f()), char>(); B<int> b; b.f(); B<int>().f(); ST<decltype(b.f()), int>(); ST<decltype(B<int>().f()), char>(); }