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

    <tr>
        <th>Summary</th>
        <td>
            Cannot call lambda defined in immediate lambda
        </td>
    </tr>

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

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

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

<pre>
    The following code compiles on both GCC and MSVC, but is refused by Clang ([Godbolt link](https://godbolt.org/z/M7KdM36YE)):
```c++
void func_1(auto)
{
 [](auto) consteval
    {
        [](auto)
        {
        }(123);
 };
}

auto func_2()
{
    func_1(123);
}
```

The error message:
```
<source>:6:9: error: no matching function for call to object of type '(lambda at <source>:6:9)'
    6 |         [](auto)
      | ^~~~~~~~
    7 |         {
      |         ~
    8 |         }(123);
 |         ~
<source>:5:5: note: while substituting into a lambda expression here
    5 |     {
      |     ^
<source>:14:5: note: in instantiation of function template specialization 'func_1<int>' requested here
   14 | func_1(123);
      |     ^
<source>:6:9: note: candidate template ignored: couldn't infer template argument 'auto:1'
    6 |         [](auto)
      | ^
1 error generated.
```

>From my experimentation:
- `func_1` must be a function template;
- The outer lambda must be immediate;
- The outer lambda must be a lambda template;
- The inner lambda must be a lambda template.

Note: the code from which I wrote this test-case is almost the same where I originally found #117676, so there could be some relation (or not).
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVU1v4zYQ_TX0ZRCDomJJPujgOPF20U0vLQr0VFDkSGJLkS5Jxc0e-tuLkeTEcQI0qCDDhObrzXtDUsZoOodYs80d29yv5Jh6H-pvP3yTYzDOrBqvn-tfeoTWW-tPxnWgvEZQfjgaixG8g8anHr7s9yCdhseff90zsYdmTGAiBGzHiBqaZ9hb6TpgomKbuy9eN94msMb9yTb3TFR9SsfI8h0TByYO3Wxf-9AxcfjOxOGx_FE_5sVvD0xs6c13jO9YwedXMXFHL989eaOhHZ36PWOikmPy5M13rCQrzH2-WkB5FxM-SUtWAFj8lufa_dL01rEkr0zkE7a5VHk_r2jBCS4lmbEJouESF8Ar6MssS-y5zzkP6YEh-AADxig7vGKD1vk--jEoZPkDy3cFy3fE2RxGC-dhkEn1pChVTsY7aH0AJa2F5ME3f6BK4FtIz0cEJkomKiuHRkuQCT4sQNKUSzsFsHIP_0kkObHNwz_zs3wu38ZeMH35_exdXXl_oMTboCvsm-UHzieiEk69sQhxbGIyaUxEkXHJg4Slf_z7GDBGoqzHgAuOzUuhjxCzzcP70tntdW3jwLiYpEtGTpr49lWfhMPRyoQQj6iMtOb77MNEuUxPvjcuUW5RQsC_RowJ9QXI7HYC9OGsfQLvyxyd4SrptNEE6QWb6ZwPqCerH612TJQJjGsxvDrJ0I0DukTQp5HId9n_nR3Gd9myHzp0GGRCvX6_aw7BDzA8k3gYDBWfyJv3zg2wgi-sFByGMSZoEOR77meuboA2oR8ThvNQnGPMMKA2n_F8maePchvnPhGxnnv7aZEj9Tifzy01e-qN6uErnIIngXoTIWFMN0pGpMNZ2sHHNAVFOSCcaE7gK_hgOuOktc_Q-tFpYCLPsrIoCzrZo6eIgLO6hCr6ASGgPQ9j5QMNCBPb9UrXud7mW7nCOivznPONqIpVXyPPNirbap63jcqKLQrO-aZpRKuKfKvylakFF7dZlnMhRCaKNVdqi1XVci11VinNbjkO0ti1tU8D3RQrE-OIdZZVWVWurGzQxuliE8LhCSYrE4LuuVBT0E0zdpHdcmtiiq9pkkkW6710zqf5OFxI19gah3rao2eRF9tqDLa-usNM6sdmrfzAxIGSL383x-DpaGXiMEGKTBwWzE-1-DcAAP__K7A4mw">