<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55251>55251</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Missing NVRO on Clang > 12
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
tupaschoal
</td>
</tr>
</table>
<pre>
The following piece of code stopped compiling since Clang 12:
```c++
struct Args
{
Args() = default;
Args(const Args&) = default;
Args(Args&&) = delete;
};
Args makeArgs() { Args a; return a; }
void foo()
{
auto a = makeArgs();
}
```
Log:
```
<source>:8:34: error: call to deleted constructor of 'Args'
Args makeArgs() { Args a; return a; }
^
<source>:5:5: note: 'Args' has been explicitly marked deleted here
Args(Args&&) = delete;
^
```
It does work on Clang <= 11 or GCC, so I wonder whether it is a bug/regression or not.
[Link to Godbolt with the example](https://godbolt.org/z/7xEsM6b5r)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJylVNFu2yAU_Rr8crXIxnGcPPihTdKqUrtJ07R3bK5tFmIswE27r9_FTpqkq7RNswCDOdx7zgFcGvlafGsRaqO1OaiugV5hhWBqqIxEcN70PUoa7Hulw7xTHc2vtaB-wll6w-INi0_tIp5KxfhtKONX5-1QebixjTvC8uMM0DN-5kvGV8DSDUisxaA9S3-HVKZzxzB88Rf4N-QFWKPHNyzLN-f-2IYlsBc7vGSV344RQRAYLPrBdlM_rL9Y_GyUJCfNtO4DqWLwBsTI5DrHFaNrJy8TPJrmbPg7QLp2ZrAVidsSZkk1nVMDaK2xoVMJrYHyTx6ELe2mjTE2bDfj-cQn_y8n4E8Py7YfMs6OFToTdujmghC0wkGJ2AG-9FpVyutXomZ3pOKkpkWL_34Argl9ZPmDB2nQwcHYHZjuePCJe4iWJEDm3a_XjK_BGXggWCfRwqFFT4xAeVDkFpRDw_idxcaic4rC0DLSObu6O9nto-p2YYvujSyN9nBQvgUKRLrFvtfIsg2par3vXTgH_I5KM2FnxoYUP6nmL1v3tCgzez6EYxvJIpWrdCUiTw5i8aSIC4n5_P3rl0tpW7rX0WB18S4RkRnKGf0JaKD18-n1qbfmB1aehhRwQHL8Lst4lkRtkZe8FPWKz5c8LXPM5VymWYUiXtUV5nwRaVGidgVpJ22RKnjMeZzFabLkCY9ni0qWZbJIl0kts9WqZvMY90LpWUgcJEe2GDmQwY4mtXLenScFCWw6xFN8un-tsYUfeuGq1ggdjYyLke4vt9Zv_A">