1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// { 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&(&)()>(); }