<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/120503>120503</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Clang] constexpr variables wrongfully treated as captures
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
yuxuanchen1997
</td>
</tr>
</table>
<pre>
Clang currently rejects the following program by saying "error: variable 'XXXcap' cannot be implicitly captured in a lambda with no capture-default specified"
```
template <typename...>
struct tag_t {};
template <auto...>
struct vtag_t {};
template <auto... V>
inline constexpr vtag_t<V...> vtag{};
template <typename T>
constexpr bool alt = true;
template <typename = void>
auto vtag_safety_of_non_stored_args() {
return []<typename T>(tag_t<T>) {
return vtag<[]() {
constexpr bool XXXcap = alt<T>;
if constexpr (XXXcap) {
return vtag<>;
} else {
return vtag<XXXcap>;
}
}>;
}(tag_t<int>{});
}
void check() {
vtag_safety_of_non_stored_args();
}
```
This seems wrong. As `XXXcap` here is not a capture. GCC and MSVC seem to have no problem with this.
See compiler explorer: https://godbolt.org/z/7rqcfGe7x
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMlE1vqzgUhn_NYXNU5NgJlAULmkzualb3quouMnAAzxibsU3azK-_4iNtk0pXlSIl4LyP3_MpvVetIcph9wS7QyTH0FmXX8a3UZqqI7PJsjQqbX3J91qaFqvROTJBX9DRP1QFj6EjbKzW9lWZFgdnWyd7LC_o5WV6A5yTc9aBKPAsnZKlJgSevry8VHIAnmIljbEBS0LVD1pVasJXcgijoxqVQYla9mUt8VWFDo29Hj7U1MhRB_QDVapRVAPnwApI2PphRaB-0DIQgtiHy0BG9hTHMYi_gBU-uLEKGGR7CgjpE6QHEE8T4VYox2DvRefvqvB50SmjlSGsrPGB3ga3EkDsnxf2_OIPvKt9_LUAP0iltRqlDgjigMGN9Gf99K-zVfWCmWwuXrxsKFxOtjkZa04-WEf1SbrWA38Ens2xsgLRURidwaVnvhjjj9e4lscP3btyDlTsV8AN_C6opUtmx1K_M8WVh6iaTxLgj9e2egfeXXmrhvSApD19svjV5or8opx-z7V6P5iePsJXJkxnS0F5ttZk1gErpgJg1VH1720CvlOJG9SnZgdW_OqUR0_Ue3x11rQxFh4hYWsQCcOOHKHyOM2cvI5SjD_2e5Smxr9_Pu9nAAaLnTzTNHCDs6WmfhnA0Ckfz8Gz4idNHd0PSpNDehu0dTSPehfC4EEUwI_Aj62tS6tDbF0L_Pg_8GPq_quaH5S-ASuiOhd1JjIZUb5JxXaXpGmSRl1OW14lmyZpWJIJnomkzHYkZCrEhpci5ZHKOePbDd9kjHG-TeN0U5ZNUpYp320b_pjAllEvlY61PvfT9ZHyfqR8w9mOiUjLkrSftx_n1bThpg2yO0QunwQP5dh62DKtfPAfiKCCnlfmvBNhd_g81OuKW9PfjFpfMDiSgWqU_ppvH41O53dJUqEby7iyPfDjdNn69TA4O-1a4MfZvAd-XP2fc_47AAD__2oiyIA">