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

            Bug ID: 101764
           Summary: ICE for constexpr if within fold expression within
                    lambda expression within a template
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: johelegp at gmail dot com
                CC: johelegp at gmail dot com
  Target Milestone: ---

See https://godbolt.org/z/o944oWafx.
```C++
void f(auto i) {
  ([]<class... T>(T...) {
    return (..., [] {
      if constexpr (T{0})
        ;
    }());
  }(i));
}
void g() { f(0); }
```
```
<source>: In instantiation of 'f<int>(int)::<lambda(T ...)> [with T = {int}]':
<source>:7:4:   required from 'void f(auto:1) [with auto:1 = int]'
<source>:9:13:   required from here
<source>:6:8: internal compiler error: in tsubst_pack_expansion, at
cp/pt.c:13102
    6 |     }());
      |        ^
0x1dadf09 internal_error(char const*, ...)
        ???:0
0x6e5511 fancy_abort(char const*, int, char const*)
        ???:0
0x962157 tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*)
        ???:0
0x94de47 instantiate_decl(tree_node*, bool, bool)
        ???:0
0x7f5dbe maybe_instantiate_decl(tree_node*)
        ???:0
0x7f7520 mark_used(tree_node*, int)
        ???:0
0x710ad5 build_op_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int)
        ???:0
0x9b4935 finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool,
bool, int)
        ???:0
0x94de47 instantiate_decl(tree_node*, bool, bool)
        ???:0
0x99020b instantiate_pending_templates(int)
        ???:0
0x7fb2f9 c_parse_final_cleanups()
        ???:0
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Compiler returned: 1
```

Reply via email to