Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
24
Iterators library
[iterators]
24.5
Iterator adaptors
[predef.iterators]
24.5.3
Constant iterators and sentinels
[const.iterators]
24.5.3.3
Class template
basic_
const_
iterator
[const.iterators.iterator]
namespace
std
{
template
<
class
I
>
concept
not-a-const-iterator
=
see below
;
//
exposition only
template
<
indirectly_
readable
I
>
using
iter-const-rvalue-reference-t
=
//
exposition only
common_reference_t
<
const
iter_value_t
<
I
>
&
&
, iter_rvalue_reference_t
<
I
>
>
;
template
<
input_
iterator
Iterator
>
class
basic_const_iterator
{
Iterator
current_
=
Iterator
(
)
;
//
exposition only
using
reference
=
iter_const_reference_t
<
Iterator
>
;
//
exposition only
using
rvalue-reference
=
//
exposition only
iter-const-rvalue-reference-t
<
Iterator
>
;
public
:
using
iterator_concept
=
see below
;
using
iterator_category
=
see below
;
// not always present
using
value_type
=
iter_value_t
<
Iterator
>
;
using
difference_type
=
iter_difference_t
<
Iterator
>
; basic_const_iterator
(
)
requires
default_
initializable
<
Iterator
>
=
default
;
constexpr
basic_const_iterator
(
Iterator current
)
;
template
<
convertible_
to
<
Iterator
>
U
>
constexpr
basic_const_iterator
(
basic_const_iterator
<
U
>
current
)
;
template
<
different-from
<
basic_const_iterator
>
T
>
requires
convertible_
to
<
T, Iterator
>
constexpr
basic_const_iterator
(
T
&
&
current
)
;
constexpr
const
Iterator
&
base
(
)
const
&
noexcept
;
constexpr
Iterator base
(
)
&
&
;
constexpr
reference
operator
*
(
)
const
;
constexpr
const
auto
*
operator
-
>
(
)
const
requires
is_lvalue_reference_v
<
iter_reference_t
<
Iterator
>
>
&
&
same_
as
<
remove_cvref_t
<
iter_reference_t
<
Iterator
>
>
, value_type
>
;
constexpr
basic_const_iterator
&
operator
+
+
(
)
;
constexpr
void
operator
+
+
(
int
)
;
constexpr
basic_const_iterator
operator
+
+
(
int
)
requires
forward_
iterator
<
Iterator
>
;
constexpr
basic_const_iterator
&
operator
-
-
(
)
requires
bidirectional_
iterator
<
Iterator
>
;
constexpr
basic_const_iterator
operator
-
-
(
int
)
requires
bidirectional_
iterator
<
Iterator
>
;
constexpr
basic_const_iterator
&
operator
+
=
(
difference_type n
)
requires
random_
access_
iterator
<
Iterator
>
;
constexpr
basic_const_iterator
&
operator
-
=
(
difference_type n
)
requires
random_
access_
iterator
<
Iterator
>
;
constexpr
reference
operator
[
]
(
difference_type n
)
const
requires
random_
access_
iterator
<
Iterator
>
;
template
<
sentinel_
for
<
Iterator
>
S
>
constexpr
bool
operator
=
=
(
const
S
&
s
)
const
;
template
<
not-a-const-iterator
CI
>
requires
constant-iterator
<
CI
>
&
&
convertible_
to
<
Iterator
const
&
, CI
>
constexpr
operator
CI
(
)
const
&
;
template
<
not-a-const-iterator
CI
>
requires
constant-iterator
<
CI
>
&
&
convertible_
to
<
Iterator, CI
>
constexpr
operator
CI
(
)
&
&
;
constexpr
bool
operator
<
(
const
basic_const_iterator
&
y
)
const
requires
random_
access_
iterator
<
Iterator
>
;
constexpr
bool
operator
>
(
const
basic_const_iterator
&
y
)
const
requires
random_
access_
iterator
<
Iterator
>
;
constexpr
bool
operator
<
=
(
const
basic_const_iterator
&
y
)
const
requires
random_
access_
iterator
<
Iterator
>
;
constexpr
bool
operator
>
=
(
const
basic_const_iterator
&
y
)
const
requires
random_
access_
iterator
<
Iterator
>
;
constexpr
auto
operator
<
=
>
(
const
basic_const_iterator
&
y
)
const
requires
random_
access_
iterator
<
Iterator
>
&
&
three_
way_
comparable
<
Iterator
>
;
template
<
different-from
<
basic_const_iterator
>
I
>
constexpr
bool
operator
<
(
const
I
&
y
)
const
requires
random_
access_
iterator
<
Iterator
>
&
&
totally_
ordered_
with
<
Iterator, I
>
;
template
<
different-from
<
basic_const_iterator
>
I
>
constexpr
bool
operator
>
(
const
I
&
y
)
const
requires
random_
access_
iterator
<
Iterator
>
&
&
totally_
ordered_
with
<
Iterator, I
>
;
template
<
different-from
<
basic_const_iterator
>
I
>
constexpr
bool
operator
<
=
(
const
I
&
y
)
const
requires
random_
access_
iterator
<
Iterator
>
&
&
totally_
ordered_
with
<
Iterator, I
>
;
template
<
different-from
<
basic_const_iterator
>
I
>
constexpr
bool
operator
>
=
(
const
I
&
y
)
const
requires
random_
access_
iterator
<
Iterator
>
&
&
totally_
ordered_
with
<
Iterator, I
>
;
template
<
different-from
<
basic_const_iterator
>
I
>
constexpr
auto
operator
<
=
>
(
const
I
&
y
)
const
requires
random_
access_
iterator
<
Iterator
>
&
&
totally_
ordered_
with
<
Iterator, I
>
&
&
three_
way_
comparable_
with
<
Iterator, I
>
;
template
<
not-a-const-iterator
I
>
friend
constexpr
bool
operator
<
(
const
I
&
x,
const
basic_const_iterator
&
y
)
requires
random_
access_
iterator
<
Iterator
>
&
&
totally_
ordered_
with
<
Iterator, I
>
;
template
<
not-a-const-iterator
I
>
friend
constexpr
bool
operator
>
(
const
I
&
x,
const
basic_const_iterator
&
y
)
requires
random_
access_
iterator
<
Iterator
>
&
&
totally_
ordered_
with
<
Iterator, I
>
;
template
<
not-a-const-iterator
I
>
friend
constexpr
bool
operator
<
=
(
const
I
&
x,
const
basic_const_iterator
&
y
)
requires
random_
access_
iterator
<
Iterator
>
&
&
totally_
ordered_
with
<
Iterator, I
>
;
template
<
not-a-const-iterator
I
>
friend
constexpr
bool
operator
>
=
(
const
I
&
x,
const
basic_const_iterator
&
y
)
requires
random_
access_
iterator
<
Iterator
>
&
&
totally_
ordered_
with
<
Iterator, I
>
;
friend
constexpr
basic_const_iterator
operator
+
(
const
basic_const_iterator
&
i, difference_type n
)
requires
random_
access_
iterator
<
Iterator
>
;
friend
constexpr
basic_const_iterator
operator
+
(
difference_type n,
const
basic_const_iterator
&
i
)
requires
random_
access_
iterator
<
Iterator
>
;
friend
constexpr
basic_const_iterator
operator
-
(
const
basic_const_iterator
&
i, difference_type n
)
requires
random_
access_
iterator
<
Iterator
>
;
template
<
sized_
sentinel_
for
<
Iterator
>
S
>
constexpr
difference_type
operator
-
(
const
S
&
y
)
const
;
template
<
not-a-const-iterator
S
>
requires
sized_
sentinel_
for
<
S, Iterator
>
friend
constexpr
difference_type
operator
-
(
const
S
&
x,
const
basic_const_iterator
&
y
)
;
friend
constexpr
rvalue-reference
iter_move
(
const
basic_const_iterator
&
i
)
noexcept
(
noexcept
(
static_cast
<
rvalue-reference
>
(
ranges
::
iter_move
(
i
.
current_
)
)
)
)
{
return
static_cast
<
rvalue-reference
>
(
ranges
::
iter_move
(
i
.
current_
)
)
;
}
}
;
}
1
#
Given some type
I
, the concept
not-a-const-iterator
is defined as
false
if
I
is a specialization of
basic_
const_
iterator
and
true
otherwise
.