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

    <tr>
        <th>Summary</th>
        <td>
            Clang crashes when using lambda captures inside a trailing return decltype
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang,
            clang:frontend
      </td>
    </tr>

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

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

<pre>
    Clang crashed on this example:

```
template<typename T>
consteval auto matches(T t)
{
    return [](auto u) -> decltype([u](){}()){}(t);
}

int main() {
    matches(0);
    return 0;
}
```

This issue was introduced from clang16.0.0 ( released on March 17, 2023) to clang 17.0.1 (released on September 9, 2023)
https://godbolt.org/z/q9v9q31f4

Gcc works fine for this example: https://godbolt.org/z/x8z41EKr4 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEU8FyozgQ_Rpx6QolWmDgwMF24j1s7WnzAw1qjHYE8kjCGc_Xb8l2EieXqVIVqKrf69evnygEc1yYO1HtBGKYaDQ_BKKonjNa4-R8N9JEeqHLhXzWO33p9paWIwyewsQa3AJxMgH4F80ny0JthbyejbwfuY08nyxFFmofLydeaGZ4FepFyO3glhD5TBZojQ5misPEQWDzClFgm4jqnZBbAADPcfULJKnVs8DmilgFtvAk1AtoHmyiF9iIarfeahJHvRP1-__D9cqvdtcWzzfRZokwk1luxfDZ-lOX_EA9SJJfeB4mF3L7mtwxIawMbxTALNE7vQ6sYfRuhiG5WWxymUsQ2IBnyxRuxv5DfpigqAXuASWqpCm6GwSKOpd5kTCPkH_5FHnu2UP7gBJyO8V4Cmk7eBB4ODrdOxtz548CD78FHn625_anKsbypvqvYYA3538EGM3CMDr_fc3wJ8Zfze-yePnbl5DpTulWtZRxV9SqrFWJCrOp6zdVMxJXqtJKlU0xjnJDPGhSjaqVqjPTocSyQJSIqi4wp5HVRhfVptfYE7WilDyTsbm15zk1z65WdwXKRmJmqWcb7um--pbCjfuPm9qO3i2RF31Pve8S01O_HoMopTUhhk_uaKLlLw8gwNvEC6zBLEewNPeaYKBTXD2nXQejGQiiJ2NTxT0v71HNVm-7bz6aOK19PrhZ4CE1vn-eTt79x0MUeLhOGAQe7kOeO_w_AAD__z7OJWk">