// { dg-do compile { target c++11 } }
template<typename T, typename U> struct same_type;
template<typename T> struct same_type<T, T> {};
template <typename T>
struct S
{
  typedef T const (&type)();
};
void f()
{
  // initial implementation didn't ignore const qualifier on
  // reference, resulting in a typedef of 'const int& (&)()'
  same_type<S<int &>::type, int&(&)()>();
}