|
1418 | 1418 |
|
1419 | 1419 | \pnum
|
1420 | 1420 | A type \tcode{I} other than \cv{}~\tcode{bool} is \defn{integer-like}
|
1421 |
| -if it models \tcode{\libconcept{integral}<I>} or |
| 1421 | +if it models \libconcept{integral} or |
1422 | 1422 | if it is an integer-class type.
|
1423 | 1423 | An integer-like type \tcode{I} is \defn{signed-integer-like}
|
1424 |
| -if it models \tcode{\libconcept{signed_integral}<I>} or |
| 1424 | +if it models \libconcept{signed_integral} or |
1425 | 1425 | if it is a signed-integer-class type.
|
1426 | 1426 | An integer-like type \tcode{I} is \defn{unsigned-integer-like}
|
1427 |
| -if it models \tcode{\libconcept{unsigned_integral}<I>} or |
| 1427 | +if it models \libconcept{unsigned_integral} or |
1428 | 1428 | if it is an unsigned-integer-class type.
|
1429 | 1429 |
|
1430 | 1430 | \pnum
|
|
1544 | 1544 | \pnum
|
1545 | 1545 | Let \tcode{i} be an object of type \tcode{I}. When \tcode{i} is in the domain of
|
1546 | 1546 | both pre- and post-increment, \tcode{i} is said to be \defn{incrementable}.
|
1547 |
| -\tcode{I} models \tcode{\libconcept{weakly_incrementable}<I>} only if |
| 1547 | +\tcode{I} models \libconcept{weakly_incrementable} only if |
1548 | 1548 | \begin{itemize}
|
1549 | 1549 | \item The expressions \tcode{++i} and \tcode{i++} have the same domain.
|
1550 | 1550 | \item If \tcode{i} is incrementable, then both \tcode{++i}
|
|
1654 | 1654 | \pnum
|
1655 | 1655 | Let \tcode{s} and \tcode{i} be values of type \tcode{S} and
|
1656 | 1656 | \tcode{I} such that \range{i}{s} denotes a range. Types
|
1657 |
| -\tcode{S} and \tcode{I} model \tcode{\libconcept{sentinel_for}<S, I>} only if |
| 1657 | +\tcode{S} models \tcode{\libconcept{sentinel_for}<I>} only if |
1658 | 1658 | \begin{itemize}
|
1659 | 1659 | \item \tcode{i == s} is well-defined.
|
1660 | 1660 |
|
|
1699 | 1699 | a sentinel of type \tcode{S} such that \range{i}{s} denotes a range.
|
1700 | 1700 | Let $N$ be the smallest number of applications of \tcode{++i}
|
1701 | 1701 | necessary to make \tcode{bool(i == s)} be \tcode{true}.
|
1702 |
| -\tcode{S} and \tcode{I} model \tcode{\libconcept{sized_sentinel_for}<S, I>} only if |
| 1702 | +\tcode{S} models \tcode{\libconcept{sized_sentinel_for}<I>} only if |
1703 | 1703 | \begin{itemize}
|
1704 | 1704 | \item If $N$ is representable by \tcode{iter_difference_t<I>},
|
1705 | 1705 | then \tcode{s - i} is well-defined and equals $N$.
|
|
3004 | 3004 | \pnum
|
3005 | 3005 | \effects
|
3006 | 3006 | \begin{itemize}
|
3007 |
| -\item If \tcode{I} and \tcode{S} model \tcode{\libconcept{assignable_from}<I\&, S>}, |
| 3007 | +\item If \tcode{I&} models \tcode{\libconcept{assignable_from}<S>}, |
3008 | 3008 | equivalent to \tcode{i = std::move(bound)}.
|
3009 |
| -\item Otherwise, if \tcode{S} and \tcode{I} model \tcode{\libconcept{sized_sentinel_for}<S, I>}, |
| 3009 | +\item Otherwise, if \tcode{S} models \tcode{\libconcept{sized_sentinel_for}<I>}, |
3010 | 3010 | equivalent to \tcode{ranges::advance(i, bound - i)}.
|
3011 | 3011 | \item Otherwise, while \tcode{bool(i != bound)} is \tcode{true},
|
3012 | 3012 | increments \tcode{i}.
|
|
3026 | 3026 | If \tcode{n == 0}, \range{i}{bound} or \range{bound}{i} denotes a range.
|
3027 | 3027 | If \tcode{n < 0}, \range{bound}{i} denotes a range,
|
3028 | 3028 | \tcode{I} models \libconcept{bidirectional_iterator}, and
|
3029 |
| -\tcode{I} and \tcode{S} model \tcode{\libconcept{same_as}<I, S>}. |
| 3029 | +\tcode{S} models \tcode{\libconcept{same_as}<I>}. |
3030 | 3030 |
|
3031 | 3031 | \pnum
|
3032 | 3032 | \effects
|
3033 | 3033 | \begin{itemize}
|
3034 |
| -\item If \tcode{S} and \tcode{I} model \tcode{\libconcept{sized_sentinel_for}<S, I>}: |
| 3034 | +\item If \tcode{S} models \tcode{\libconcept{sized_sentinel_for}<I>}: |
3035 | 3035 | \begin{itemize}
|
3036 | 3036 | \item If \brk{}$|\tcode{n}| \ge |\tcode{bound - i}|$,
|
3037 | 3037 | equivalent to \tcode{ranges::advance(i, bound)}.
|
|
5316 | 5316 | Class template \tcode{move_sentinel} is a sentinel adaptor useful for denoting
|
5317 | 5317 | ranges together with \tcode{move_iterator}. When an input iterator type
|
5318 | 5318 | \tcode{I} and sentinel type \tcode{S} model \tcode{\libconcept{sentinel_for}<S, I>},
|
5319 |
| -\tcode{move_sentinel<S>} and \tcode{move_iterator<I>} model |
5320 |
| -\tcode{\libconcept{sentinel_for}<move_sentinel<S>, move_iterator<I>>} as well. |
| 5319 | +\tcode{\libconcept{sentinel_for}<move_sentinel<S>, move_iterator<I>>} is modeled as well. |
5321 | 5320 |
|
5322 | 5321 | \pnum
|
5323 | 5322 | \begin{example}
|
|
0 commit comments