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

            Bug ID: 119764
           Summary: noexcept lambdas do not have unused captures get
                    pruned
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nshead at gcc dot gnu.org
  Target Milestone: ---

The following sample fails because the non-ODR usage of 'x' does not get pruned
in 'b':

int main() {
  const int x = 123;
  auto a = [&]() { return x; };
  auto b = [&]() noexcept { return x; };
  static_assert(sizeof(a) == sizeof(b));
}

'g++ main.cpp' gives:

main.cpp: In function 'int main()':
main.cpp:5:29: error: static assertion failed
    5 |     static_assert(sizeof(a) == sizeof(b));
      |                   ~~~~~~~~~~^~~~~~~~~~~~
main.cpp:5:29: note: the comparison reduces to '(1 == 8)'

This gave a segmentation fault instead until r9-2784-g86e95f35c52213 (PR87185).

Reply via email to