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

            Bug ID: 123058
           Summary: ICE (after error) for reduced parest snippet
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rdapp at gcc dot gnu.org
  Target Milestone: ---
            Target: x86 riscv

This cpp code

struct __detector;
template <typename, template typename> > using __detected_or __detector;
template <typename _Default, template typename>
    _Op > using __detected_or_t typename __detected_or<_Default, _Op>::type;
template <typename> struct pointer_traits;
template <typename _Tp> using __pointer _Tp;
template <typename _Alloc> struct allocator_traits {
  using pointer = __detected_or_t<_Alloc, __pointer>;
  pointer_traits<pointer>

ICEs:

<source>:2:30: error: expected '<' before 'typename'
    2 | template <typename, template typename> > using __detected_or
__detector;
      |                              ^~~~~~~~
<source>:2:40: error: expected 'class' or 'typename' before '>' token
    2 | template <typename, template typename> > using __detected_or
__detector;
      |                                        ^
<source>:2:62: error: expected '=' before '__detector'
    2 | template <typename, template typename> > using __detected_or
__detector;
      |                                                              ^~~~~~~~~~
<source>:3:39: error: expected '<' before 'typename'
    3 | template <typename _Default, template typename>
      |                                       ^~~~~~~~
<source>:4:5: error: expected 'class' or 'typename' before '_Op'
    4 |     _Op > using __detected_or_t typename __detected_or<_Default,
_Op>::type;
      |     ^~~
<source>:4:33: error: expected '=' before 'typename'
    4 |     _Op > using __detected_or_t typename __detected_or<_Default,
_Op>::type;
      |                                 ^~~~~~~~
<source>:6:41: error: expected '=' before '_Tp'
    6 | template <typename _Tp> using __pointer _Tp;
      |                                         ^~~
<source>:9:25: internal compiler error: in resolve_typename_type, at
cp/pt.cc:30272
    9 |   pointer_traits<pointer>
      |                         ^

I ran into it when reducing another SPEC parest issue on riscv.

Reply via email to