<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">