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

            Bug ID: 94719
           Summary: ICE with constrained inherited constructor template
                    from class template since r10-7859
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ppalka at gcc dot gnu.org
  Target Milestone: ---

$ cat testcase.C
template<typename T>
struct bar
{
  template<int N = 5>
    requires (N == 5)
  bar() { }
};

template<typename T>
struct foo : bar<T>
{
  using foo::bar::bar;
};

void baz()
{
  foo<int>{};
}

$ g++ -std=c++2a -fconcepts
testcase.C: In instantiation of ‘foo<int>::foo() [with int N = 5][inherited
from bar<int>]’:
testcase.C:17:12:   required from here
testcase.C:5:17: internal compiler error: unexpected expression ‘N’ of kind
template_parm_index
    5 |     requires (N == 5)
      |              ~~~^~~~~


This is caused by the fix for PR94549.

Reply via email to