Template template parameter with a concept - why does GCC reject it?

88 Views Asked by At

I'm writing a generic struct that is templated on another template. I want the inner template to only accept types that match a concept.

template<template<std::regular> typename T> struct example{};
template<template<std::regular> typename T> using example_t = example<T>;

The above code compiles fine on MSVC and Clang, but GCC gives an error (View on compiler explorer):

<source>:4:72: error: constraint mismatch at argument 1 in template parameter list for 'template<template<class> class requires  regular< <template-parameter-2-1> > T> struct example'
    4 | template<template<std::regular> typename T> using example_t = example<T>;
      |                                                                        ^
<source>:4:72: note:   expected 'template<class> class requires  regular< <template-parameter-2-1> > T' but got 'template<class> class requires  regular< <template-parameter-2-1> > T'

Which compiler is correct here?

0

There are 0 best solutions below