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

            Bug ID: 91673
           Summary: GCC ICE when partially specialising class template on
                    a function-signature type with deduced noexcept
                    qualifier
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: lewissbaker.opensource at gmail dot com
  Target Milestone: ---

See https://godbolt.org/z/BndP6r

Version: GCC trunk
Command-line: -std=c++1z

Compiling the following code:
```
template<typename Sig>
struct overload;

template<typename Ret, typename... Args, bool NoExcept>
struct overload<Ret(Args...) noexcept(NoExcept)> {
    using signature_t = Ret(Args...) noexcept(NoExcept);
};

overload<void()> x;
```

results in the following output:
```
<source>: In instantiation of 'struct overload<void()>':
<source>:9:18:   required from here
<source>:6:11: internal compiler error: in tsubst_copy, at cp/pt.c:16183
    6 |     using signature_t = Ret(Args...) noexcept(NoExcept);
      |           ^~~~~~~~~~~
```

This seemed to compile without error under earlier releases of GCC.

Reply via email to