[Bug c++/106086] New: ICE: trying to capture 'this' in instantiation of generic lambda

ldalessandro at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Jun 26 05:37:51 GMT 2022


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

            Bug ID: 106086
           Summary: ICE: trying to capture 'this' in instantiation of
                    generic lambda
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ldalessandro at gmail dot com
  Target Milestone: ---

Following code generates ICE

    #include <array>
    #include <concepts>
    #include <utility>

    template <int>
    struct foo {
        constexpr auto operator()(std::same_as<int> auto...) const -> int {
            return 0;
        }
    };

    template <int _size>
    struct bar : foo<_size>
    {
        constexpr auto operator()(std::array<int, _size> index) const -> int
        {
            return [&]<std::size_t... i>(std::index_sequence<i...>) {
                return foo<_size>::operator()(index[i]...);
            }(std::make_index_sequence<_size>());
        }
    };

    bar<1> b;
    int i = b({0}); // <-- ERROR

<source>:18:58: internal compiler error: trying to capture 'this' in
instantiation of generic lambda

live: https://godbolt.org/z/TKGWME5aG

A couple of similar, closed bugs show up in the search so I've added them as
see-also. 105788 might be the same but it's listed as "ice-on-invalid-code" and
I'm fairly sure mine is valid (it refers to 100291).


More information about the Gcc-bugs mailing list