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
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<D>(ranges::size(t)).