<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/90949>90949</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
std::launder builitin incorrectly requires complete type
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kelbon
</td>
</tr>
</table>
<pre>
I think(hope) not many people use std::launder, but I discovered this by accident:
```cpp
A* p = 0;
(void)std::launder(p); // error, requires full type, but this function only takes ptr and returns ptr
```
https://godbolt.org/z/aaqW4Mb6r
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxkkctu5CoQhp-mvCmlhcFtm4UXnRNZyuKsZ82lus2EBodLRp6nH9mdUaSMhEAFVP1f_aVydrdANMH5Gc4vjapliWl6I69jaHS02_SKZXHhDfi4xJWASwyx4F2FDVeKqyesmTAXC-IC4uJVDZYS8P9Q14KvaF028YMS2b1QRr2hMsZZCmXPYC_A_u49eyyzro-bC_ALrgjiBRmI589vfPyIzgKX_4qOK3AJ4hmBz8BnpJTiwZLovbpEGa_Veyzb3smD8IC61mCKiwFj8BsW9UYZ15JQBYuJSk3hiL9xPsKllDXvHIfkLVodfTnFdAM-_wY-K_X-o_tf96mxk7BSSNXQ1A5tN_BBdKJZJjGaq2qllbpXPe9pHLqzbo0Qw8CG1raNmzjjHTszwSSTTJxGLrShlnXEmO3PV-gY3ZXzJ-8_7rt243KuNEkmO9l4pcnnY8acB_qFxyNwvo88TXvOk663DB3zLpf8VaW44mn67jPq6rwrLqALJqZEpvjty2IT76unQofNTU1--maRK0vVJxPvwOdd6vN4WlP8SaYAnw_ADHw-GvgTAAD__2-Z1PU">