https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99186

--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> ---
And it doesn't matter whether enums are used:

template<int N, typename T, typename... U>
struct tuple_impl : tuple_impl<N + 1, U...>
{ };

template<int N, typename T>
struct tuple_impl<N, T>
{ };

template<typename T, typename U>
struct tuple : tuple_impl<0, T, U>
{ };

template<typename T, int N, typename... U>
void
get(const tuple_impl<N, T, U...>&)
{ }

template < auto >
struct S
{
    int i;
};

int main()
{
   tuple<S<1>,S<1U>> x;
   get<S<1U>>(x); // does not compile
}


The compiler doesn't correctly distinguish S<1> and S<1L>.

Reply via email to