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

            Bug ID: 114632
           Summary: ICE with explicit this in lambda
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bruck.michael at gmail dot com
  Target Milestone: ---

struct S {};

auto lambda = [](this auto& self, const int x) {};

int main()
{
    void (*func)(S&, int) = lambda;
    return 0;
}

https://gcc.godbolt.org/z/3aW1be8PG

<source>: In substitution of 'template<class auto:1> constexpr<lambda(this
auto:1&, int)>::operator decltype (<lambda(this auto:1&,
int)>(static_cast<auto:1&>(self), static_cast<const int&&>(x))) (*)(auto:1&,
int)() const [with auto:1 = S]':
<source>:7:29:   required from here
    7 |     void (*func)(S&, int) = lambda;
      |                             ^~~~~~
<source>:3:15: internal compiler error: Segmentation fault
    3 | auto lambda = [](this auto& self, const int x) {};
      |               ^
0x26743fc internal_error(char const*, ...)
        ???:0
0xc9db80 tsubst(tree_node*, tree_node*, int, tree_node*)
        ???:0
0xc9d2c8 tsubst(tree_node*, tree_node*, int, tree_node*)
        ???:0
0xc9d032 tsubst(tree_node*, tree_node*, int, tree_node*)
        ???:0
0xc9d2c8 tsubst(tree_node*, tree_node*, int, tree_node*)
        ???:0
0xc85143 instantiate_template(tree_node*, tree_node*, int)
        ???:0
0xcb76d5 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node*
const*, unsigned int, tree_node*, unification_kind_t, int, conversion**, bool,
bool)
        ???:0
0xa8e3bf can_convert_arg_bad(tree_node*, tree_node*, tree_node*, int, int)
        ???:0
0xd38ca0 store_init_value(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, int)
        ???:0
0xb4618e cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int,
cp_decomp*)
        ???:0
0xc5b3ea c_parse_file()
        ???:0
0xdaf8b9 c_common_parse_file()
        ???:0
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Compiler returned: 1


clang compiles this snippet, which is probably incorrect.

Reply via email to