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

    <tr>
        <th>Summary</th>
        <td>
            `<numeric>`: `std::reduce` is missing `static_assert` for _Mandates_
        </td>
    </tr>

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

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

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

<pre>
    ```cpp
#include <vector>
#include <string>
#include <numeric>
#include <execution>

struct Op {
 int operator()(int, std::string);
};

int main() {
 std::vector<std::string> v;
  return std::reduce(v.begin(), v.end(), 0, Op{});
}
```

https://godbolt.org/z/5T4cn95nv

According to the current wording, the above should be rejected as `std::reduce` has the following _Mandates_ ([[reduce]](https://eel.is/c++draft/reduce#5)): 

> _Mandates_: All of
> (5.1) - `binary_op(init, *first)`,
> (5.2) - `binary_op(*first, init)`,
> (5.3) - `binary_op(init, init)`, and
> (5.4) - `binary_op(*first, *first)`
> are convertible to `T`.


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVE1vpDgQ_TXFxQpy2zQfBw50erit5jL3yNhF4123jWxDdvbXr0wnodNKdiVkjItX7xX1KBGCvljEFo4nOJ4zscTJ-XbCV23MX9ng1O8WSnq75DwDPQPtgHFtpVkUEuDPK8roPPAfXwVD9Npevgna5Ypey2-i-DfKJWpn9_i2hugXGcnPmUB1uh0RbSNxM3qRlLAaWAOs1jYCeyYhKuAd8O5NC2uAv-GgOu_7bU2JrkLbW5I7ho8s7-U-P-blP8j6kY0Qj3Hxdsd5VItEYPWaD3h5Z0gC1xyt2h9pWn7Oibo6P6q9bd47cq98inEOiYr1wPqLU4MzMXf-Aqz_B1h__FVI2xzteg_qpHReaXsh0ZE4IZGL92gjeb0dJynpWAxuRRImtxhFBiQe_0QZURERCJT0sciSkkmEDTk6Y9xrYnj5Q1glIoYXkopNhju9vX88p4vVn2tANLkOwHoJ7ATspLwYI7D-_Uvy4_bFGuAduS8qdWInS9HOGOLGPQqsPuaH1OCnJH_QVvjfL27eTKM31wDrRu1DTPnL1JIHNPsSvaOeyS3T12j-n9yfkERY9YAu_pf7Qf0HXHgk0tkVfdSDwdR1KOkvKGl-x7HtMtVy1fBGZNgeqkNRVqzhNJvasaK05HSsCqSNOjRKHhTHpqrKUdCqGDPdMsoKeqTsUFNGD_k4cqTlwKuBCoFFDQXFq9AmN2a9JotmOoQF24bWdZEZMaAJ20RizOIr2YLAWBpQvk2Yp2G5BCio0SGGPUvU0eA2rz7NlvTcfWNTHchVh5D8ub0gopYvIgT0MYVH5--slC3etA__mY7TMuTSXYH1Scjb7Wn2Lv0iwPpNfrLxVt6_AQAA__8fQpDk">