// PR 98116, ICE with stripping typedef array type // { dg-do compile { target c++11 } } // { dg-additional-options {--param=hash-table-verification-limit=10000000 -fchecking=2} } // We got confused by alias templates that alias the same type. Their // hashes were different (good), but they compared equal (bad) namespace std { struct is_convertible; template using remove_pointer_t = typename _Tp ::type; template struct enable_if; template void declval(); template using enable_if_t = typename enable_if<_Cond>::type; template class Trans_NS___cxx11_basic_string { long _M_string_length; }; } // namespace std struct string16_char_traits; template class std::Trans_NS___cxx11_basic_string; template using IsLegalDataConversion = std::is_convertible; template using ContainerHasConvertibleData = IsLegalDataConversion< std::remove_pointer_t)>, T>; template using EnableIfSpanCompatibleArray = std::enable_if_t::value>; template class span { template [N], std::Trans_NS___cxx11_basic_string, Extent>> span(); };