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

    <tr>
        <th>Summary</th>
        <td>
            [libc++][clang] Warn about implicit conversions inside emplace_back and similar forwarding functions
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang,
            libc++
      </td>
    </tr>

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

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

<pre>
    I would like to get compiler warnings about implicit conversion in cases like these:
```c++
std::vector<int> test;
test.emplace_back(4.2);
```
```c++
std::variant<int> test;
test.emplace<int>(4.2);
```
```c++
alignas(int) unsigned char test[sizeof(int)];
std::construct_at(reinterpret_cast<int*>(test), 4.2);
```
Right now, getting these warnings only seems to be possible when also using `-Wsystem-headers` (https://godbolt.org/z/oncnj4YzM). That does not really seem practical.

I understand that in these cases the arguments are just forwarded to a placement `new`, which is where the implicit conversion happens, but that those placement `new` are in headers that have `pragma GCC system_header` set, e.g.

https://github.com/llvm/llvm-project/blob/9be9f622bfd62e4cdceb48f19a882067d8a03587/libcxx/include/__memory/construct_at.h#L26

https://github.com/llvm/llvm-project/blob/9be9f622bfd62e4cdceb48f19a882067d8a03587/libcxx/include/__memory/construct_at.h#L38-L42 I think it would be great if these warnings could reach the user even without `-Wsystem-headers`.

As a sidenote, libstdc++ seems to behave the same way (https://godbolt.org/z/nGW81Esd3), while MSVC's STL produces the warnings as desired (https://godbolt.org/z/E8EzEhnob).
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVU2P2zYQ_TX0ZbCGNLK-Dj7setdBgOTSBA16MihyLHFDkQKHWmf31xeUHWcTpG3aUwHCho038-bjzYxkNr0j2oryTpT3KznHwYft-CiV75hWndfP27dw8rPVYM1nguihpwjKj5OxFOAkgzOuZ5CdnyOYcbJGmQRwTxTYeAfGgZJMfHEwEJMobkV2L7JbUWXnpwTepbf8y1EnRHH7RCr6IIqdcVEUDxCJoyguqPRjTeNkpaJDJ9Vngc1mjQLbK-Tq_tfYZDAyEf0j3RXyHymlNb2TLLBJbrCF2S2N0KAGGc685R2bF_LHK0iU91eWa8zKO45hVvEgo8AmkHGRwhQoHpTkr7ng7TnWxTG2Anfw92H_ZvohgvOnBO0pRuP6c-u-ddw7-wxMNHJSRUcweWbTWYLTQA6kZQ8zJ0NRZTef-JkjjTcDSU2BRZWBwGaIceKUCe4F7nuvO2_j2ode4P5F4N475R43f7y8F9iu4eMgI2hPDM5HCCTtJQKYglTRKGnXl3SWz7cwu0QWpdMQk7FxlyzOiowDgQz9PJKLDDIQPM4c4ejDSQZNOiUmYWl5gqREHJ1SlXAHp8GoAQyndMMi7J_Kf5DTRI6TRTfHcxhx8Ew_87vEYBxcqnRGD_KJEmQKsh8lvNnt4FzMwxmW7JhiYqB1_10FfqivicPcrZUfBe6tffr6dTMF_0gqCtx31ncC921H7bFC7I66QtoorajbNMe8lU2DWVXrRmZF2dTJgenUly8C98YpO2sSuD8cRhp9eBa4f63P9SCweIfV_zzAorl5t0F4C3Ew7jOYeNl_HUEfKIno-OMoqAUQSKph0cHMFICeyMHJxCEtxp-PwHe9umWQwEaT85FSM63pOOrL4ng9aYsgEg_LMUXx_Cuj5N58avIH1sVlAZwGYwnef_h9J7Bm-PDxHUzB61ld5uLbZmfQxCaQ_hWah-bh5WFwqUnteqW3hW6LVq5om9dZVjVFVderYVvrIlOkOqq0VtTUucryJq_avNyUKj-2K7PFDIs8R8Qsq8t6jZnelJXK27ouN2Vbi01GozR2nfSR-FeGeaZtXeRVsbKyI8vLWUNUVrpeIArcCcQkh8suRkxHL2wXiXVzz2KTWcORvzmNJtrlPL4yK-9FeXd2Wt7DJxncX18_BuNST-H1oYK0j9iMxsrwddmkPXmcnYrJaDUHu_3Xo7EUgAXulxr8GQAA___wmX7-">