1 // PR 98372 ICE due to incorrect type compare
2 // { dg-do compile { target c++14 } }
3 
4 template <typename _Tp> using remove_pointer_t = typename _Tp ::type;
5 template <bool> struct enable_if;
6 template <bool _Cond, typename>
7 using enable_if_t = typename enable_if<_Cond>::type;
8 template <typename> bool is_convertible_v;
9 template <typename, unsigned long = 0> class Span;
10 template <typename T, unsigned long> class Span {
11   using element_type = T;
12   template <unsigned long N>
13   Span(element_type (&arr)[N],
14        enable_if_t<is_convertible_v<remove_pointer_t<decltype(data(arr))>>,
15                    decltype(nullptr)>);
16 };
17 template <typename T> class Span<T> {
18   using element_type = T;
19   template <unsigned long N>
20   Span(element_type (&arr)[N],
21        enable_if_t<is_convertible_v<remove_pointer_t<decltype(data(arr))>>,
22                    decltype(nullptr)>);
23 };
24 
25 struct aaa
26 {
27   Span<char> data0;
28 };
29