<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/97365>97365</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang++-19: Incorrect warning `unused-private-field` even though member is used in constructor.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          greg7mdp
      </td>
    </tr>
</table>

<pre>
    ### test program: `Wunused-private-field.cpp`

```
// compiling this with `clang++-19 -Wall -c Wunused-private-field.cpp`
//
// produces a warning (even though `c` is used in the lambda)
//   `Wunused-private-field.cpp:19:13: warning: private field 'c' is not used [-Wunused-private-field]`
// ----------------------------------------------------------------------------------------------------
#include <functional>

struct node;

struct cluster {
   void ping();
};

void register_cb(std::function<void()>);

struct node {
   node(cluster&);
private:
   cluster &c;
};

node::node(cluster& c) : c(c) {
   register_cb([&]() { c.ping(); });
   c.ping();
}
```

### compiler output:

```
~/test ❯ clang++-19 -Wall -c Wunused-private-field.cpp                                                                                                                                     
Wunused-private-field.cpp:19:13: warning: private field 'c' is not used [-Wunused-private-field]
   19 |    cluster &c;
      |             ^
1 warning generated.
```

### compiler version

```
~/test ❯ clang++-19 --version                                                                                                                                                              
Ubuntu clang version 19.0.0 (++20240630031615+ac84ada9a169-1~exp1~20240630151739.1777)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-19/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVktv2zgQ_jXjy0ACRdqUddDBjiOg9130WFAkI3NBPcCHm73kty8oyYmdTYsWC3QrCIJlDuf7vnlwJLw33aB1Dbsj7E4bEcN5dHXndFf2atq0o_q7BsqWG4P2ASc3dk70wA4InHyOQ_RaZZMzFxF09mS0VbmcJuAEyAnIYX1yst7LK22ANijHfjLWDB2Gs_H41YRzciqtGDqgR6DHrKgw-yysxUziD4DNfu8wJjeqKLVHgV-FGxIY0L2-6AHDeYzdggicoPGY3KNJKxqt6FslgFZ37vD7qtmhqNKDpfiseOnnaomzJQItJdAyIQ5jWFBhd8w-9Au70_u4Zb_gugIyM0gblUZgD09xkMGMg7DAHm_T64OLMuAwKg3s-MGKtNEH7RDKdRURL6NROKUA0X0K8-vG8vTOyWzpdGeSjy-yBbr3QQE7ADtcOQF7SGZXX493Ht-TvOMxs6b7lSJQfrt1TUXCutq_aqFcfof0EoxE8V8AKIFWmOpCpv_nlxtC90pTb1KeqmCWlixR5ndxw4R-QzqRzL8R2Q_b8ZrrtdGXvtQOxximGF7Ff7j5BWgznwzwSKE6waHBn25g_B0ueGxgT6Bii65f3uTX1BUpxw_4rUpbyS4Wb-R3a0MWr8dcpwftRNAq_7mkX7TzqaH-U8qz1cv_kskfvt6l_M82DiEuWq5hwKLKSU5wbqUkjxK6JZwRwgpe7IAehdxvhRKVKHiVFS_6eSperkbFrihZlRdlWb5Okj-E63RqKnze8y98m00ys2aIz1k3xNXk7LRQ2I9K27myRm-el6VPgw_CWq1Oxs1DmDbRO6CNNW162kufFRXQpjXDu-RtVM1UxSqx0XVRFtW-LAvCNue65G1LW02f1J7LquC8UoozQbecy7YSbGPqWVBJCsrYnrKcKCJIWZaa8a2uhIYt0b0wNk_4-ei6jfE-6roqGd9trGi19fNXBqVrpdD0weHqmW8bOw9bYo0P_s1DMMHq-r6wkuJPgxyd0zK8DXROPmwqTvB20Pe6b7W7nfNyHJapMLp8E52tzyFMPp1386DtTDjHNpdjv0b2GuDJjX9pGYA2s0wPtFmUXmr6TwAAAP__eVx_hg">