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

    <tr>
        <th>Summary</th>
        <td>
            requires-clauses think void values can be passed to variadic functions
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    ```c++
#include <type_traits>
void a(...);
template<typename T>
bool b()
{
    return requires { a(a(1)); };
}
bool c() { return b<void>(); }
```
Expected: Either false, because `a(1)` is void and cannot be passed to `a()`, or a hard error, because there is no set of template arguments for which that sub-expression is legal.

Actual: True.

https://godbolt.org/z/db83c35fq
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxcUstyqzgQ_Zpm02VKlsCYBQvy8BdkP9VIbaMZGTl6OMl8_ZQMydx7q0RBofPo090Uo70szAO0T9C-VJTT7MMwOk3BV5M3XwMcxHo0yKdyxAhS2UW7bBhBPaevG_-VAtkUQb2CGO_eGiSQx7quQfagCifx9eYo8UZY6Mr4tuIn7x1OII8FLEboCh4RMXDKYcHA79kGjgjd00O3PPsCfogjdC-rR_nY5PQq96BsMhOo51JaMV29Nq4YfzKCGF8_b6wTG1Ajvto0c8Azucggn3FiTTkywkH81HAQaCOumReDmpbFJ5wYbxQjG0z-G76ii44PSDhTMMgh-PCrdDHkorh4jJzQn_G7dUjhkq-8pIhnH_BjtnrGNFPCmKcdf94Cx2j9UtiOL-TqEk2Mo06ZXMnzFjJvP-eUbhHUCPIE8nTxZvIu1T5cQJ7-BXky01Fp1Z7fKzMo06ueKh72XdMcun2vumoelD6aqT00bb83nSHd9bpRPR-7RohGKVXZQQrZimbfSCVa1dV0JGpV2xG1ko08QiP4StbVzt2vxbuyMWYe9qo99E3laGIXH6sp5cIf-LgFKcumhqGQdlO-RGiEszHF_2WSTY6H773ZaVdaGzHNdvlnHdWdXOZYpvX7qO4ULBmr8ZwXnaxfYpWDG_7olk1znmrtryBPxXR77W7B_806gTw9So0gT1uW-yD_CwAA__8uZQ1O">