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

            Bug ID: 111485
           Summary: Constraint mismatch on template template parameter
           Product: gcc
           Version: 13.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: barry.revzin at gmail dot com
  Target Milestone: ---

Reduced from StackOverflow (https://stackoverflow.com/q/77136297/2069064):

template <typename T> constexpr bool regular = true;

template <typename T> concept C = regular<T>;

template<template<C> typename T> struct example { };
template<template<C> typename T> using example_t = example<T>;

gcc 13.2 rejects with:

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

But this should be fine. Clang and MSVC accept. "

Reply via email to