Files
2025-10-25 03:02:53 +03:00

2.3 KiB
Raw Permalink Blame History

[range.prim.empty]

25 Ranges library [ranges]

25.3 Range access [range.access]

25.3.13 ranges::empty [range.prim.empty]

1

#

The name ranges::empty denotes a customization point object ([customization.point.object]).

2

#

Given a subexpression E with type T, let t be an lvalue that denotes the reified object for E.

Then:

  • (2.1)

    If T is an array of unknown bound ([dcl.array]), ranges::empty(E) is ill-formed.

  • (2.2)

    Otherwise, if bool(t.empty()) is a valid expression, ranges::empty(E) is expression-equivalent to bool(t.empty()).

  • (2.3)

    Otherwise, if (ranges::size(t) == 0) is a valid expression, ranges::empty(E) is expression-equivalent to (ranges::size(t) == 0).

  • (2.4)

    Otherwise, if bool(ranges::begin(t) == ranges::end(t)) is a valid expression and the type of ranges::begin(t) models forward_iterator, ranges::empty(E) is expression-equivalent to bool(ranges::begin(t) == ranges::end(t)).

  • (2.5)

    Otherwise, ranges::empty(E) is ill-formed.

3

#

[Note 1:

Diagnosable ill-formed cases above result in substitution failure when ranges::empty(E) appears in the immediate context of a template instantiation.

— end note]

4

#

[Note 2:

Whenever ranges::empty(E) is a valid expression, it has type bool.

— end note]