<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/120853>120853</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] Check request: detect incorrect creating of `std::enable_shared_from_this` objects
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
denzor200
</td>
</tr>
</table>
<pre>
```
struct A : std::enable_shared_from_this {
};
std::shared_ptr<A> a2 = std::make_shared<A>(); // OK
std::shared_ptr<A> a1(new A); // OK
auto* a3 = new A; // INCORRECT
A a; // INCORRECT
```
These two incorrect usages might contain hidden SEGFAULT.
Suppose it easily to detect by clang-tidy and might be really helpful.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEkkFv2zgQhX_N6DKIQZGSZR10oO14sdhFAyTpORiJY4kNLboklcD99YVcFc6hRQABOvB9jzOPj2K0_cjcQLmFcp_RlAYfGsPjDx-kEFnrzaUBoWEtlk_omMLUJdQISmNMBpQGpXmk1vFLHCiweTkGf3pJg40I1Xbmqz2o7RVe9IvwnAKonQZ1jyQR1P7meKLX336LBOQGZA1qiyAPIA_48N8nljnIzcjvqP_A0ZQ8SI2krvf-kt00_37ZPTw-3u-eQWiN9JeTj8E8DxwZ07tHO3Y-BO4STpF6jniy_ZCw82MiO-JgjeERn-7_Oeiv_z-vQOin6Xz2kdEmZIrWXTB5NJxmj_aCnaOxv0vWXJBGs9i1jIHJuQsO7M7Hya0y0yhTq5oybvJKFZtcyXKTDQ0diUxtqragsth0eSeVWstcrFtZ0rGqM9tIIYtcylwKVeTrVVcVVJm6rRUVBasSCsEnsm7l3Ntp5UOf2RgnbnIpNqXKHLXs4rVHUt6mBSnnXoVmpu7aqY9QCGdjijefZJO7NvADVu5xN3D3ioG_TxzTXLUljVu2XWBKduzRHxHW4rMqwlqgb79xl2I2BdcMKZ3jTFxftbdpmNpV508gD_Nsy-_uHPzMgDxcF44gD8vOb438GQAA__9iQABE">