https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107579
Bug ID: 107579 Summary: ICE on fold-expression on .* member access operator Product: gcc Version: 12.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jeanmichael.celerier at gmail dot com Target Milestone: --- The function that is causing the ICE: ``` constexpr int index_in_struct(const auto& s, auto... member) { int index = -1; int k = 0; avnd::for_each_field_ref(s, [&](auto& m) { if constexpr(requires { bool(&m == &(s.*....*member)); }) { if(&m == &(s.*....*member)) { index = k; } } ++k; }); assert(index >= 0); return index; } ``` The error: /home/jcelerier/score/3rdparty/avendish/include/avnd/common/for_nth.hpp:114:26: internal compiler error: trying to capture 'member#0' in instantiation of generic lambda 114 | if(&m == &(s.*....*member)) | ^~~~~~ 0x19eab38 internal_error(char const*, ...) ???:0 0x71c547 add_capture(tree_node*, tree_node*, tree_node*, bool, bool) ???:0 0x71c5b3 add_default_capture(tree_node*, tree_node*, tree_node*) ???:0 0x7e232a tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ???:0 0x7e0baa tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ???:0 0x7e8d8c tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*) ???:0 0x7dff89 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ???:0 0x7e0d41 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ???:0 0x7dfdeb tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ???:0 0x7db043 instantiate_decl(tree_node*, bool, bool) ???:0 0x6edb1b mark_used(tree_node*, int) ???:0 0x68b85f build_op_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) ???:0 0x810f2d finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) ???:0 0x7e1f0c tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ???:0 0x7e8d8c tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*) ???:0 0x7dff89 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ???:0 0x7db043 instantiate_decl(tree_node*, bool, bool) ???:0 0x6edb1b mark_used(tree_node*, int) ???:0 0x68b85f build_op_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) ???:0 0x810f2d finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) ???:0