<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=http://email.email.llvm.org/c/eJylVN9v2yAQ_mvwyymRjWsnefBDuzRS36Zp0p6xOTtMGFzAida_fmecrkmaVpsWAbmPO-4Xn6mt_FV93yO0Vmt7VKaDxkqE4FTXofMgYLABTVBCQyu0R8JeBXVAUAZYmf4YjUGUKBc99jW6RTuaJihrSMfSLUvvTyvBeURoRI9-EA3CSb16mAUf3NgE2Fl7pQD6Tbt8zfgGWL4Fia0YdWD5mcW1La1UkfGB8fLtnMaAF8eicQl2QCeCdWT1d2dvhIvG5Wc5fhTs85Nstb2Qz-IfrJLQnjJuowPq2qXNvCoToBfKzF280eH2NZWop_E-5OVFXkFvR9dQfx5Zfl-cJhyFM0StSZxJAq8kAcZXMdwKlAdjA8xkAmEkHJXWca9GwF6FQPuseFh8TLli-09cKR5vlxTXpxaewGFvieqBvpDIhImbdGP8y2mLPpUjxeWrQKAflMbluY9vODg7lb0PYfAkML6j0VlZWx2W1nWEXmg2e5H558fVcyKrXG7yjUjEGPbWVY1w2vpO6AO-DMnodHXlS4X9WC8pOgGtD69_C4r8Exvi7k55P6InoeDrvEj21bpJMc24LNKybHEj641s2zqtmyLNa85XiRY1al9RsxnnjRZ0d5xPVf-B-X3rrKGXQU6aYpv8f16q4inPMs45zTUvlxlymWWCt8Vdk2atYHcpEnn1cvIzNS9xVXRZj50npVY--Del8F51RJRYBmUYVNARzBUUW9jFB-3r2YMWqXWLWfkuielWMdffblWF1w>52835</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] False Positive in Wunneded-member-function?
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang,
clang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
carlosgalvezp
</td>
</tr>
</table>
<pre>
The following code triggers a potential false positive in `Wunneeded-member-function`
```
namespace
{
struct Foo
{
Foo() = default;
Foo(Foo const&) = delete;
Foo& operator=(Foo const&) = delete;
Foo(Foo&&) = default;
Foo& operator=(Foo&&) = default;
};
}
void f(Foo f) {}
int main()
{
f(Foo());
}
```
```
source>:5:5: warning: member function 'Foo' is not needed and will not be emitted [-Wunneeded-member-function]
Foo() = default;
^
```
If I remove the constructor, the code won't compile.
Repro: https://godbolt.org/z/cha1sqE7q
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVVFGPmzAM_jXhxWoF4YD2gYfeepXubZom7TmAQzOFhEtCq92vn0l7u7brnTaUGDt24s_mC43tftXf9wjSam2PyvTQ2g4hONX36DwIGG1AE5TQIIX2SLZXQR0QlAFWpj8mYxA77BYDDg26hZxMG5Q15GPplqWbsyTzNKJpxIB-FC3C2V09nhQf3NQG2Fl74wB65lW-YnwNLN9Ch1JMOrD8IuI2liRVZHxgvHzfpzHg1bYYXIId0YlgHUX929476WJw-RnGj5J9vpNV2yv9Iv_Bqg7kGbGMB1DXrmNOUpkAg1Dm1MU7HZZvUKKfxt8prz_kjent5FrqzxPLN8V5wlE4Q9Sa1RNJ4I0kwHgV01WgPBgb4EQmEKaDo9I6rjUIOKgQaJ0Vj4uPKVds_4srxdP9kqJ8lvAMDgdLVA90QyITZm7SF-Nfzkt0VY6Ul1eBjGFUGpeXZ3zD0dm57H0IoyeF8R2N3naN1WFpXU_WK812LzL_8lS9JF2dd-t8LZKggsaa6m21oN4VW9jF-_f14v7FTtxrRL5LJqfrm7Qq7KdmSUDJ0Prw9loQyJ_YEs13yvsJPSkFX-VFsq-lLNdVWT2IVY6FqLJ1VmXtql0VOe_atJWJFg1qP-NknJ-gcj436I-Zb6Szhn4i3ewptomqecqzjHNOc8XLZYa8yzLBZfHQppkU7CFFYqlezujmLiWujkCbqffk1MoH_-4U3queGBFB0PliCnvr6lY4bX0v9AFfxyRWVseyfgPc82_u">