<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/134049>134049</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Specific structure name can cause shadowing of globally defined lambda, causing "struct::operator()" to be called instead of "lambda::operator()"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jjkazana
      </td>
    </tr>
</table>

<pre>
    Defining structure with naming convention used by the compiler for lambda expressions ("$_\<num\>") causes compiler to use structure's "operator()" instead of the one defined for a global lambda(s).

In the following code:

```cpp
struct $_0
{
    int c;
 void operator()() const {std::cout << __func__ << " " << c <<" from struct\n";}
};

auto lambda = [](){std::cout << __func__ << " from lambda\n";};

int main()
{
    lambda();
}
```
Call to "lambda()" invokes "$_0::operator()" instead of the expected lambda:
![Image](https://github.com/user-attachments/assets/77513173-f5de-483f-b89e-639c43c8c2a4)

If the "$_0::operator()" makes use of any memory, then calls to lambdas result in memory access operations. "-fsanitize=address" allows for detection of them: [godbolt example](https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:1,endLineNumber:16,positionColumn:1,positionLineNumber:16,selectionStartColumn:1,selectionStartLineNumber:16,startColumn:1,startLineNumber:16),source:'%23include+%3Ciostream%3E%0A%0Astruct+$_0%0A%7B%0A++++int+var%3B%0A++++void+operator()()+const+%7Bstd::cout+%3C%3C+__func__+%3C%3C+%22+%22+%3C%3C+var+%3C%3C%22+from+struct+(const)%5Cn%22%3B%7D%0A++++void+operator()()+%7Bstd::cout+%3C%3C+__func__+%3C%3C+%22+%22+%3C%3C+var+%3C%3C%22+from+struct+(mutable)%5Cn%22%3B+var%3D0xBEEF%3B%7D%0A%7D%3B%0A%0Aauto+lambda+%3D+%5B%5D()+/*mutable*/+%7Bstd::cout+%3C%3C+__func__+%3C%3C+%22+from+lambda%5Cn%22%3B%7D%3B%0A%0Aint+main()%0A%7B%0A++++lambda()%3B%0A%7D%0A'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:46.16052398750079,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:clang_trunk,filters:(b:'0',binary:'1',binaryObject:'1',commentOnly:'0',debugCalls:'1',demangle:'0',directives:'0',execute:'0',intel:'0',libraryCode:'0',trim:'1',verboseDemangling:'0'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'-O0+-Wall+-fsanitize%3Daddress',overrides:!(),selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1),l:'5',n:'0',o:'+x86-64+clang+(trunk)+(Editor+%231)',t:'0')),k:31.807650355851912,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:output,i:(compilerName:'x86-64+clang+20.1.0',editorid:1,fontScale:14,fontUsePx:'0',j:1,wrap:'0'),l:'5',n:'0',o:'Output+of+x86-64+clang+(trunk)+(Compiler+%231)',t:'0')),k:22.03182565664731,l:'4',n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4)

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEF19v4y7y05AXlAiDHTsPeYiTVlrp9OtJq7t7rDAeJ-xiiACn7X76E-CkcZvdbU97-kmJbWaG-cf8Ybhzcq8B1qioUbGb8cEfjF1_-_ad_-CazxrTvqx30Ekt9R47bwfhBwv4SfoD1rwPUGH0CbSXRuPBQYubF-wPgIXpj1KBxZ2xWPG-aTmG56MF56TRDiNaIUoRzR9RsUVsq4c-ftxF6AoLPjhwr2y8CexfdUC0DEyoOYLl3tjIb4UoxVI7D7zFpouKGA24DSZAG3XheK9Mw9WoFKKVQ3S1QGSDyOaLjns6o5R5Sta1gNgmYdGSpJ84HhHZJF1wsIEEbFkjssEYY6k9FojF5cnIFr9VsooWGu08RmXtfBtEsI0wg8eIBXfgx8du0OLx8bwOlsV_WorxI4A6a_rRMajY6uBAVqNyF3XaJT0Q2fDBm_NJILbD6cxHlT6hRRQ3Om8i7iwomN9zqUfW1565-DwgEn3S8-xZRDZbrlQ4bkTphDwe7cl8h3juyetR4d-GADwfQXhoz-LTedIMFfWXnu8hueHg_dEFHL1H9H4v_WFoFsL0iN4PDuyce8_FoQftHaL33DmIH2VZZCwr2bwrWpjnFevmTbWC-ZKtRM5EJSjPRzeQzZek0O_073mwMsS76TDXL7iH3tgXRLdhu8aCK-Xw5TgdtuAG5bHUIyXmQoBzY-CFhFsEofPOcS29_AGI7XjbhmwM8ngIdxfTowUPImZzcl6P2CaEyt60jVEewzPvj-q2yxLJwth9BLB9RGXRrurni0MMuhbuWhm9sJURW3VSgeZ9zD9aZoiWiG47o_1XwVWAZvkI-JeDfz4nMpLIvgU0olvFdZAlEC1oPT62DlSyMckB3W6NGno97gHd_kNq-GvoG7ABtkR0ezROhi0TyjPwPflFxFfPrZ9smqJubH2_4ybhKmDMYMXooGAdk1qooQUUjWVbaZy3wPuwuEO0CGFfnCtXJApROMLLevyqLz-pA9WJ28DgPToUN0TrW-UN0ToWuKTJm_JyVm981Ocy8xYeTKLT9ysyajUBJaJQnxCtr2ysRk1WiBaxYkXCZFC5-6RVf781_eB5o-CmPeez2pHn-u7u_p2V6etylEVqC4jW51IbVdildxEfuyvT7xHdXMSntP8DDhltPKtw-4yudU5hedVjfh7B0xZyxeXikjKlkkpZVKT6oSfVxKTV9rqK1GPuJQAby5O_3rdKnL8jtsmXi2xJCspWVVkQUl5JzH8hMS1CiSU3mG9vV9J0Y3qtoxcI24hQDx-9HfT3UDql8mBTAa-aifxGam5fJpU3gR6abyD8BCFMH7rig1YvEx4tNMM-dHM3IW-h53qvYEorbSiKJ3ATMDyDGPyUVGoPagJRsrHcvmzHu9oF7q3sJ6JPYBvjYJc0kHr_1qGd4nv3bwlPD0fQf7zvKNm4q-MKAs0xdufEY_5AEK3n_-FKhfdrsw4peWnXMTxOYK1s4S27z3a2zzW2_72vfbStvelq2YdTE9H6uVrOl3noO9H5sVSOkZ6KV3W-YFwydvXrpGXZoiLlsiCsKKoiW2X0_5a1ZvDHUDjf5uxfl_vPO_MoWWSLc55Ey2Q7evaTwfpk-fGtkh_w-cOoc226D7l_e6lMHz0ASheEZRUtlsVymZcs-xP-v7KO_pbJrc0nsC6l2Hixn7Vr1q7Yis9gnZU5KyrKlmR2WANtBGvLVS46wXLK8yWrqiwrMiC8bMRqJteU0ILkhJKKLglZkCqvMr4kjSB50bQ5ygn0XKqFUqc-3Kxn0rkB1hnLSb6aKd6AcnF8p1TDE47YMF4Uu5ldh03zZtg7lBMlnXevbLz0CtZfjyBkJ8XVbB9u3FhwnSZw7A68TaOw6cbJWb1cBupzd91G6kCFKB3vKj-ZbbzBDcQJBtrrQe113Lu9cTZYtf7FjBYsG1_zozWxS9H76I8wpo0OO63pfwMAAP__LBa93w">