<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">