Title
`std::midpoint` should not accept `const bool`
Status
new
Section
[numeric.ops.midpoint]
Submitter
Jan Schultke

Created on 2025-05-21.00:00:00 last changed 1 week ago

Messages

Date: 2025-05-24.09:46:59

Proposed resolution:

This wording is relative to N5008.

  1. Modify [numeric.ops.midpoint] as indicated:

    template<class T>
      constexpr T midpoint(T a, T b) noexcept;
    

    -1- Constraints: `T` is an arithmetic type other than cv `bool`.

Date: 2025-05-21.00:00:00

The constraints of the first overload of `std::midpoint` are as follows:

template<class T>
  constexpr T midpoint(T a, T b) noexcept;

-1- Constraints: `T` is an arithmetic type other than `bool`.

It does not appear intentional that `const bool` is supported considering that [numeric.ops.gcd] excludes cv `bool`.

More generally, it is questionable that cv-qualified arithmetic types aren't excluded in general, considering that [numeric.sat] excludes them with the "signed or unsigned integer type" constraint. However, tightening the constraints for these other functions seems evolutionary, not like fixing an obvious oversight, and so it likely requires a separate issue.

History
Date User Action Args
2025-05-24 09:46:59adminsetmessages: + msg14766
2025-05-21 00:00:00admincreate