diff --git a/xml/issue3403.xml b/xml/issue3403.xml index baf72e39f7..583b2f4547 100644 --- a/xml/issue3403.xml +++ b/xml/issue3403.xml @@ -30,6 +30,63 @@ expression, I think it's an improvement?
Priority to 2 after reflector discussion.
Previous resolution [SUPERSEDED]:
+++ ++This wording is relative to N4861. +
+ ++
+- + +
Add a new paragraph after paragraph 1 in
+: + +-?- Also within this clause, +make-signed-like-t<X> +for an integer-like type X +denotes make_signed_t<X> +if X is an integer type; +otherwise, it denotes a corresponding +unspecified signed-integer-like type +of the same width as X. + ++- +
Modify
+ +as indicated: ++-1- The name ranges::ssize denotes +a customization point object (
). + The expression ranges::ssize(E) +for a subexpression E of type T +is expression-equivalent to:++
(1.1) — If range_difference_t<T> has +width less than ptrdiff_t, +static_cast<ptrdiff_t>(ranges::size(E)).++
(1.2) — Otherwise, +static_cast<range_difference_t<T>>(ranges::size(E)).++ +-?- Given a subexpression E with type T, +let t be an lvalue that denotes the reified object for E. +If ranges::size(t) is ill-formed, +ranges::ssize(E) is ill-formed. +Otherwise, let D be the wider of +ptrdiff_t or decltype(ranges::size(t)); +ranges::ssize(E) is expression-equivalent to +static_cast<make-signed-like-t<D>>(ranges::size(t)). + +
+
--?- Also within this clause, +-?- Also within this Clause, make-signed-like-t<X> for an integer-like type X denotes make_signed_t<X> @@ -81,10 +138,11 @@ width less than ptrdiff_t, let t be an lvalue that denotes the reified object for E. If ranges::size(t) is ill-formed, ranges::ssize(E) is ill-formed. -Otherwise, let D be the wider of -ptrdiff_t or decltype(ranges::size(t)); +Otherwise let D be +make-signed-like-t<decltype(ranges::size(t))>, +or ptrdiff_t if it is wider than that type; ranges::ssize(E) is expression-equivalent to -static_cast<make-signed-like-t<D>>(ranges::size(t)). +static_cast<D>(ranges::size(t)).