Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
25
Ranges library
[ranges]
25.7
Range adaptors
[range.adaptors]
25.7.23
Elements view
[range.elements]
25.7.23.2
Class template
elements_
view
[range.elements.view]
🔗
namespace
std
::
ranges
{
template
<
class
T, size_t N
>
concept
has-tuple-element
=
//
exposition only
tuple-like
<
T
>
&
&
N
<
tuple_size_v
<
T
>
;
template
<
class
T, size_t N
>
concept
returnable-element
=
//
exposition only
is_reference_v
<
T
>
|
|
move_
constructible
<
tuple_element_t
<
N, T
>
>
;
template
<
input_
range
V, size_t N
>
requires
view
<
V
>
&
&
has-tuple-element
<
range_value_t
<
V
>
, N
>
&
&
has-tuple-element
<
remove_reference_t
<
range_reference_t
<
V
>
>
, N
>
&
&
returnable-element
<
range_reference_t
<
V
>
, N
>
class
elements_view
:
public
view_interface
<
elements_view
<
V, N
>
>
{
public
:
elements_view
(
)
requires
default_
initializable
<
V
>
=
default
;
constexpr
explicit
elements_view
(
V base
)
;
constexpr
V base
(
)
const
&
requires
copy_
constructible
<
V
>
{
return
base_
;
}
constexpr
V base
(
)
&
&
{
return
std
::
move
(
base_
)
;
}
constexpr
auto
begin
(
)
requires
(
!
simple-view
<
V
>
)
{
return
iterator
<
false
>
(
ranges
::
begin
(
base_
)
)
;
}
constexpr
auto
begin
(
)
const
requires
range
<
const
V
>
{
return
iterator
<
true
>
(
ranges
::
begin
(
base_
)
)
;
}
constexpr
auto
end
(
)
requires
(
!
simple-view
<
V
>
&
&
!
common_
range
<
V
>
)
{
return
sentinel
<
false
>
{
ranges
::
end
(
base_
)
}
;
}
constexpr
auto
end
(
)
requires
(
!
simple-view
<
V
>
&
&
common_
range
<
V
>
)
{
return
iterator
<
false
>
{
ranges
::
end
(
base_
)
}
;
}
constexpr
auto
end
(
)
const
requires
range
<
const
V
>
{
return
sentinel
<
true
>
{
ranges
::
end
(
base_
)
}
;
}
constexpr
auto
end
(
)
const
requires
common_
range
<
const
V
>
{
return
iterator
<
true
>
{
ranges
::
end
(
base_
)
}
;
}
constexpr
auto
size
(
)
requires
sized_
range
<
V
>
{
return
ranges
::
size
(
base_
)
;
}
constexpr
auto
size
(
)
const
requires
sized_
range
<
const
V
>
{
return
ranges
::
size
(
base_
)
;
}
constexpr
auto
reserve_hint
(
)
requires
approximately_
sized_
range
<
V
>
{
return
ranges
::
reserve_hint
(
base_
)
;
}
constexpr
auto
reserve_hint
(
)
const
requires
approximately_
sized_
range
<
const
V
>
{
return
ranges
::
reserve_hint
(
base_
)
;
}
private
:
//
[range.
elements.
iterator]
, class template
elements_
view::
iterator
template
<
bool
>
class
iterator
;
//
exposition only
//
[range.
elements.
sentinel]
, class template
elements_
view::
sentinel
template
<
bool
>
class
sentinel
;
//
exposition only
V
base_
=
V
(
)
;
//
exposition only
}
;
}
🔗
constexpr
explicit
elements_view
(
V base
)
;
1
#
Effects
: Initializes
base_
with
std
::
move
(
base
)
.