24 Ranges library [ranges]

24.3 Range access [range.access]

24.3.11 ranges​::​empty [range.prim.empty]

The name ranges​::​empty denotes a customization point object ([customization.point.object]).
Given a subexpression ranges​::​empty(E) with type T, let t be an lvalue that denotes the reified object for E.
Then:
[Note
:
Diagnosable ill-formed cases above result in substitution failure when ranges​::​empty(E) appears in the immediate context of a template instantiation.
— end note
]
[Note
:
Whenever ranges​::​empty(E) is a valid expression, it has type bool.
— end note
]