[PATCH] D122768: [Clang][C++20] Support capturing structured bindings in lambdas

Arthur Eubanks via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 4 13:15:59 PDT 2022


aeubanks added a comment.

In D122768#3700486 <https://reviews.llvm.org/D122768#3700486>, @cor3ntin wrote:

> In D122768#3700451 <https://reviews.llvm.org/D122768#3700451>, @aeubanks wrote:
>
>> in the commit message
>>
>>   In addition, capturing an anonymous union member,
>>   a bitfield, or a structured binding thereof now has a
>>   better diagnostic.
>>
>> "better diagnostic" implies there was already a diagnostic, but we're seeing new errors pop up. is this just a not precise commit message or are new errors related to capturing bitfields by reference unintentional?
>
> New errors when capturing bit fields are probably*not* intentional. You have some of the problematic code i could look at? (not that the patch was reverted and then re-landed to fix a bug there)
> And... the commit message is a bit inaccurate as the change that was supposedly improving diagnostics for reference to bit fields was remove (and i forgot to update the commit message accordingly)

reduced, this does seem wrong

  $ cat /tmp/a.cc
  struct S {
          int s : 4;
  };
  
  void f() {
          S s;
          int l = s.s;
          auto a = [&]() {
                  l;
          };
  }
  $ clang++ -fsyntax-only /tmp/a.cc
  /tmp/a.cc:10:3: error: cannot capture a bit-field by reference
                  l;
                  ^
  /tmp/a.cc:8:6: note: 'l' declared here
          int l = s.s;
              ^
  /tmp/a.cc:3:6: note: bit-field is declared here
          int s : 4;
              ^
  1 error generated.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D122768/new/

https://reviews.llvm.org/D122768



More information about the cfe-commits mailing list