<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61889>61889</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Lambda instantiation error is silently skipped as substitution failure
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Fedr
</td>
</tr>
</table>
<pre>
The following program
```
template <class T, auto F = [](T x) { *x; }>
void foo(T) {}
void foo(...) {}
int main() {
foo(42);
}
```
is invalid and rejected by GCC and MSVC, but Clang accepts it, selecting `foo(...)` overload. Online demo: https://gcc.godbolt.org/z/6hTjzqsoc
Related discussion: https://stackoverflow.com/q/75889477/7325599
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsUs1u2zwQfJrVZRFBIvV70MGxP32XFgVao3eKXMtMKNIhKefn6QvaLpKmBQRIGs7OcHZXhKBnSzRAfQ_1LhNrPDo_jKR8Njn1OuyPhAdnjHvWdsaTd7MXCxQ7KDbQFLfn8htpORkRCYFvpREh4B7YFsUaHY4IfIdXD2DdHl-A9QjtPQLbvAC_R2h3wP-7Kp2dVnhwLjFvvHR8Nf3MyPP83xxtIy5CW2Ddb8IFR8RbacWA9cBv-Hv5n7l0QG3PwmiFwir09EAyksLpFf_fbi_Y1x8_tynrtEbcGmFnFFLSKQbUMeGBDMmYGghN8fHa0BTozuSNEyrHb9ZoS6hoccA3eIzxFIBvgI3AxlnKfHZqcibmzs_AxjdgY3PcP7w9BSc_Jv9OaQ4KlQ5yDUE7-7dciEI-JuuDcc-5dAuw8QnY2NZd11dtmz45q-u-v2pmauCq573IaCibruBt2XZtdhxqXlE7HYqG0aHkvGtVKVTZCaoEp7aUmR5YwXhRFWXZ1g1rcyYVk1SXfXVQrFcSqoIWoU1uzHlJ2TIdwkpDU3ZdnxkxkQmX_WTM0jNeDoGxtK5-SDV30zoHqAqjQwzvKlFHQ8MXsUxKoLYhChu1iNpZJO-dRx0waEM2mlcMj_p0IoUiYFinEHVcL8yD0Gb1lK3eDJ8GouNxnW6tS6a3193Ju7QiwMbLVUMaU4ryKwAA__-75Aab">