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

            Bug ID: 82794
           Summary: ICE: Cannot allocate memory for concept with default
                    argument
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: victor.nicolae.savu at gmail dot com
  Target Milestone: ---

Here is the reproduction on godbolt: https://godbolt.org/g/Ag8aqs

When I try to define a concept with two template arguments where latter depends
on the former:

> code: -----------------------------
template<typename F, typename G = F>
concept bool Foo = true;

template<Foo fun>
using foo = void;
> -----------------------------------

I get the following error:

> 4 : <source>:4:10: internal compiler error: in tsubst, at cp/pt.c:13607
>  template<Foo fun>
>           ^~~
mmap: Cannot allocate memory

Compiler version:
> x86-64 GCC 7.2
Compiler flags:
> -fconcepts


It seems that it doesn't really matter what template we are defining. I went
for a generic using statement just for the simple reproduction, but foo could
be a function or a class and the same problem occurs.

The problem seems to stem from the `typename G = F` part. Variations such as
`typename G = typename F::associated` also fail.

Replacing that by `typename G` results in a valid compilation error, while
replacing by `typename G = int` leads to successful compilation (as expected).

Please let me know if there is any other information that I need to provide.

Reply via email to