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

    <tr>
        <th>Summary</th>
        <td>
            std::variant<bool, int> selects the wrong type when passed a std::vector<bool>::reference
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    I ran into this trying to switch Chromium from `absl::variant` to `std::variant`. This code should, as I understand, return zero in both cases:

```
#include <cstddef>
#include <variant>
#include <vector>

using Variant = std::variant<bool, int>;

size_t ShouldReturnZero() {
    return Variant(true).index();
}

size_t ShouldReturnZero2() {
    std::vector<bool> vec(1, true);
    return Variant(vec[0]).index();
}
```

Skimming godbolt output, they both return zero in libstdc++, but libc++'s `std::variant` selects `int` instead of `bool`: https://godbolt.org/z/3cvqPh4Go
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVE1v2zgQ_TXUZRBDIfXlgw6xHS9yW2wWe9hLQYpjiy1FuuTQqfPrC0l2XLgJUoCg4fl6856eJGM0e4fYsnLFyk0mE_U-tFoejVboMuX1qX2CIB0YRx6oNxEonIzbA3mIL4a6HtZ98INJA-yCH4BVuVTRMvHAxMNRBiMdsSof61mVR9K3mQX8O47tvEaIvU9WM74GGeEJktMYIkk3hQJSCg5eMXgwDpSnHjoZMY4T8w3LL3eVn8_8lwvjOps0AhPrLpLWuGPi8b3sZasPstiRD9fkdKc4qvHf3AhMbOA3jmKtvLcjBTPPFqtfJ0Tzil8Inifu_0wk_8fgGW8YXwKrz8UAcJHgjMZ4QyEh48uFcRp_zB3X6fXmD2D4ezhXCmfKMwPxCEfsGG_uRzJn7De8dxcc68tVzsrN52vePLfpfv5mhmFUeO-18pbAJzokmvB7PM0uuHGGNSqS7hhfTWcNKtEYfIvU8QMvQkSLHU1pM0eMi4RSg9-NwUmGKmfiAXqiw2Q9vmV8e15v4cOe8e0r41vRHb__3Rd_-Uy3Qi_FUmbY3lcNF2VdlE3Wt2XFi6aSYqmUUkVV87oo6q4ssenyplBNZlqec5EXvLivRV42i5qLnd6pplK6qmu1ZEWOgzR2Ye1xGLEzE2PCtuJC8MxKhTZeXu7QjkV3Ku0jK3JrIsVrGxmy2H7q3Dd9qEd4CX78DpwOCC89OjjIGFGD_Ng9czTgDgO6DrMUbHsjo6E-qUXnB8a343bnn7tD8F-xI8a3E8PI-HYi-TMAAP__Nch0HA">