[clang] [Clang] Rebuild lambda captures in default member initializers while skipping body (PR #196597)

Eli Friedman via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 16 22:02:37 PDT 2026


efriedma-quic wrote:

For that testcase, AST excerpt for clang 22:

```
                              | `-CXXDestructorDecl <col:32> col:32 implicit used ~(lambda at line:19:32) 'void () noexcept' inline default
                              |   `-CompoundStmt <col:32>
                              |-CXXConstructExpr <col:38, col:41> 'std::string':'std::basic_string<char>' 'void (const basic_string<char> &)'
                              | `-ImplicitCastExpr <col:38, col:41> 'const basic_string<char>' lvalue <NoOp>
                              |   `-MemberExpr <col:38, col:41> 'std::string':'std::basic_string<char>' lvalue .s 0x3a991ef0
                              |     `-MemberExpr <col:38> 'NonTrivial' lvalue ->nt 0x3a9a0148
                              |       `-CXXThisExpr <col:38> 'S *' implicit this
```

and for main:

```
                                | `-CXXDestructorDecl <col:32> col:32 implicit used ~(lambda at line:19:32) 'void () noexcept' inline default
                                |   `-CompoundStmt <col:32>
                                |-MemberExpr <col:38, col:41> 'std::string':'std::basic_string<char>' lvalue .s 0x11629f50
                                | `-MemberExpr <col:38> 'NonTrivial' lvalue ->nt 0x11634e08
                                |   `-CXXThisExpr <col:38> 'S *' implicit this
```

I guess we're missing code to construct an InitializationSequence for the lambda capture.

https://github.com/llvm/llvm-project/pull/196597


More information about the cfe-commits mailing list