<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/82974>82974</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-tidy: cppcoreguidelines-pro-type-member-init doesn't understand initialization through references
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
FalcoGer
</td>
</tr>
</table>
<pre>
Consider this code:
```c++
#include <tuple>
class C
{
private:
int m_data1;
double m_data2;
public:
explicit C(const float NUMBER)
// ~~~~~~~~
// Constructor does not initialize these fields: m_data1, m_data2 (fix available) (clang-tidy cppcoreguidelines-pro-type-member-init)
{
std::tie(m_data1, m_data2) = Create(NUMBER);
}
static auto Create(const float NUMBER) -> std::tuple<int, double>
{
return {static_cast<int>(NUMBER), static_cast<double>(NUMBER)};
}
};
auto main() -> int
{
const float MAGIC = 3.1415F;
C c(MAGIC);
return 0;
}
```
clang-tidy emits a diagnostic that the variables are not initialized, but they are.
clang version
```text
Ubuntu clang version 19.0.0 (++20240222031214+307409a8872f-1~exp1~20240222151237.1514)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVMGO4jgQ_RpzKQUlNpDkkEM3NKM5zB5WO-eWYxfglbEju9yi99DfvjIEAswcBkVpddVz1XvPlZIxmr1D7NjylS03M5no4EO3lVb5bxhmvdef3dq7aDQGoIOJoLxGJl5YuWHl9b0qL49i_DU_lygXximbNAITa0qDRSbeLjllZYywHoH1eAKGYD4kTeUBAIwjOL5rSbJi4nWKa596i2OK31JXwJB6a9RUCU-DNcoQrBlvlHeRYGe9JPjr54_Xt78Zb6-st4xvAb7G32M0W0EhKfIBtMcIzhMYZ8hIa_5DoANGhJ1BqyMTLzfifH0lCow3O3MC-SGNlb1FxtscU1a6fUFGf4IaBuUD7pPRaI3DWAzBF_Q5YHHEY4-hyB1vjLMZk4XjL5LO2sULGWS8-ZXHua3YwDpgdpw3kw_3LrN68-hrLi3JKJCJ_HT6t45CwcTbHZXLCKyNo0zkcoG3kfitjICUgsvxS9d3JSONJcTbA2u-hkfMVP8eVm8mfZO4u-jlfVZ3lMYx3tyU5K5PEwsA99J_vHz7vj77KubVolpuH8xcg2K8OWOefR6FlhONG7frx3VP725a8GgoggRt5N75mK-GDpLyKMKHDCbPWAQZ8GlWdXasT2fgZ87Pf2kAHxii8e6JCOFp9OFnnxwleABD1c7LeQln4_I24CVflJzzUlS8WjD-Ksp6UbayaWq-K6ovPA3V1xVULSsu6nm1zMhxwP-RYY-UP6dTs3pfLYpBFda4dCr2Lo2QQ0Cp4eg12gwcfDSnS-q7iyStRb0xIacY36YYGN_25lnY5d-Z7oRuRStn2FV12bSLUrTl7NDpqlyJtlm0erdSQta8bBqum7rqtVRVw2emG2Wsyla0y3KOXKGUvMZdi3VbSbYo8SiNnVv7cZz7sJ-ZGBN2DW_rxczKHm08r2LOpxtmnOfVHLp8qOjTPrJFaU2kOJUhQxa7uzPi5Q_XyHmNOcZrguQ0hkjS6WlMJOUrpUPwaX-AgDsM6BTGWQq2OxANec1dtuPe0CH1c-WPjG8zs_FPbvsvKmJ8e1YbGd-eBf8fAAD__4d_6Ok">