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?