26
Ranges library
[ranges]
26.5
Range utilities
[range.utility]
26.5.2
Helper concepts
[range.utility.helpers]
1
#
Many of the types in subclause
[range.
utility]
are specified in terms of the following exposition-only concepts:
template
<
class
R
>
concept
simple-view
=
//
exposition only
view
<
R
>
&
&
range
<
const
R
>
&
&
same_
as
<
iterator_t
<
R
>
, iterator_t
<
const
R
>
>
&
&
same_
as
<
sentinel_t
<
R
>
, sentinel_t
<
const
R
>
>
;
template
<
class
I
>
concept
has-arrow
=
//
exposition only
input_
iterator
<
I
>
&
&
(
is_pointer_v
<
I
>
|
|
requires
(
I i
)
{
i
.
operator
-
>
(
)
;
}
)
;
template
<
class
T,
class
U
>
concept
different-from
=
//
exposition only
!
same_
as
<
remove_cvref_t
<
T
>
, remove_cvref_t
<
U
>
>
;
template
<
class
R
>
concept
range-with-movable-references
=
//
exposition only
input_
range
<
R
>
&
&
move_
constructible
<
range_reference_t
<
R
>
>
&
&
move_
constructible
<
range_rvalue_reference_t
<
R
>
>
;