<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/59389>59389</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] Clang-Tidy produces a false positive when returning from a lambda `cppcoreguidelines-owning-memory`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
H-G-Hristov
</td>
</tr>
</table>
<pre>
Clang-Tidy produces a false positive when returning from a lambda:
https://releases.llvm.org/15.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/cppcoreguidelines/owning-memory.html#cppcoreguidelines-owning-memory
> returning a newly created resource of type 'void' or 'gsl::owner<>' from a function whose return type is not 'gsl::owner<>'C/C++[cppcoreguidelines-owning-memory](https://releases.llvm.org/15.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/cppcoreguidelines/owning-memory.html)
Is caused by:
```C++
TEST(ExternalLibTest, MicrosoftGslOwner)
{
struct S
{
int value{1};
};
const auto MakeS = [] -> ::gsl::owner<S*>
{
return ::gsl::owner<S*>{new S{}};
};
const ::gsl::owner<S*> sPtr = MakeS();
EXPECT_EQ(sPtr->value, 1);
EXPECT_NE(sPtr->value, 2);
}
```
but is fine:
```C++
namespace {
struct S
{
int value{1};
};
auto MakeInt()
{
return ::gsl::owner<S*>{new S{}};
}
} // namespace
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVU-v4jYQ_zTOZQQyDvl3yGH5k92Vuu1WcOitcpwJuOvYyHZg-faVIQ_Co32v1V4WRUYznhnP7zfjMXdO7jRiSZIFSVYR7_3e2PLT5OPkk5XOm2NUm-ZcLhXXu8lWNmc4WNP0Ah1waLlyCAfjpJdHhNMeNVj0vdVS76C1pgMOind1w0n8gdAVocO69_7ggo5VhFUWFXKHbqrUsZsauyOsmiVTOqWEVd4Y5QirREhhJON3bzlhVWPEbXviZXMOwh7Ft4v2cBDG4q6XDSqpMejMKaQ36bAz9jzd-04RFj8ZTh7MxrmTeD1CyUHjSZ1BWOQeG7DoTG8FgmnBnw8IhGVHIxvCMjA2SDunAvL4gzlptCRekngddge-2l4LL42G0944HE66hpIOtPFvxFgSVi0JW4QvWbyHKVkRlv9slSjGVH92IHjvsIH6_KqDSEqv3wvei3a73mwJy9ffPVrN1S-y3qLzhC3hixTWONP6j079diHtdlQ2OIPzthceNoMIAPe94Se1hyNXPZJsMSPZisSLsfVdvmuF0c4D772BL_wbboDEK7jeN5iEZrpW8qmkG8JCr72RzNAb7_hnC40n2ATvbPV_Un47Lriv3l6wXFARlgdGn2Ot__i6Xm7_XP9OWB5cAuQrg2wJs7HPyPrX9T9Zs4cTstWrThifXPc-XJdWavxPjaN5h-7ABd5Zvq6PPfFQgn_thWdSb9X_rP3A1HO8HyznnZAXEeB6q-GG7hUFUVPGTREXPMJylmZ0nqcZi6N9OW9TzGjW5A1j85SLtBBJVsR0hmmeIBaRLBllbMZoTnOasHhaJ3lbNG024_O2qQUlc4odl-o2SSLpXI9lUsR5ESleo3Ivr44tg9Gk7neOzKmSzt8HUOSlV5f3aTRXkhX88IsEJKXvTciURr1V5eOM3Em_7-upMB1hVUhz-JscrPkLhSesukANE-6C9u8AAAD__49-LVo">