[numeric.ops.midpoint] (original) (raw)

26 Algorithms library [algorithms]

26.10 Generalized numeric operations [numeric.ops]

26.10.16 Midpoint [numeric.ops.midpoint]

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

Constraints: T is an arithmetic type other than bool.

Returns: Half the sum of a and b.

If T is an integer type and the sum is odd, the result is rounded towards a.

Remarks: No overflow occurs.

If T is a floating-point type, at most one inexact operation occurs.

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

Constraints: T is an object type.

Mandates: T is a complete type.

Preconditions: a and b point to, respectively, elements i and j of the same array object x.

[Note 1:

As specified in [basic.compound], an object that is not an array element is considered to belong to a single-element array for this purpose and a pointer past the last element of an array of n elements is considered to be equivalent to a pointer to a hypothetical array element n for this purpose.

— _end note_]

Returns: A pointer to array element of x, where the result of the division is truncated towards zero.