[range.prim.ssize]

# 25 Ranges library [[ranges]](./#ranges)

## 25.3 Range access [[range.access]](range.access#range.prim.ssize)

### 25.3.11 ranges​::​ssize [range.prim.ssize]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L1091)

The name ranges​::​ssize denotes
a customization point object ([[customization.point.object]](customization.point.object "16.3.3.3.5 Customization Point Object types"))[.](#1.sentence-1)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L1095)

Given a subexpression E with type T,
let t be an lvalue that denotes the reified object for E[.](#2.sentence-1)

If ranges​::​size(t) is ill-formed,ranges​::​ssize(E) is ill-formed[.](#2.sentence-2)

Otherwise let D be*make-signed-like-t*<decltype(ranges​::​​size(t))>, orptrdiff_t if it is wider than that type;ranges​::​ssize(E) is expression-equivalent tostatic_cast<D>(ranges​::​size(t))[.](#2.sentence-3)
