26
Ranges library
[ranges]
26.7
Range adaptors
[range.adaptors]
26.7.6
All view
[range.all]
26.7.6.2
Class template
ref_
view
[range.ref.view]
1
#
ref_
view
is a view of the elements of some other range
.
🔗
namespace
std
::
ranges
{
template
<
range
R
>
requires
is_object_v
<
R
>
class
ref_view
:
public
view_interface
<
ref_view
<
R
>
>
{
private
:
R
*
r_
;
//
exposition only
public
:
template
<
different-from
<
ref_view
>
T
>
requires
see below
constexpr
ref_view
(
T
&
&
t
)
;
constexpr
R
&
base
(
)
const
{
return
*
r_
;
}
constexpr
iterator_t
<
R
>
begin
(
)
const
{
return
ranges
::
begin
(
*
r_
)
;
}
constexpr
sentinel_t
<
R
>
end
(
)
const
{
return
ranges
::
end
(
*
r_
)
;
}
constexpr
bool
empty
(
)
const
requires
requires
{
ranges
::
empty
(
*
r_
)
;
}
{
return
ranges
::
empty
(
*
r_
)
;
}
constexpr
auto
size
(
)
const
requires
sized_
range
<
R
>
{
return
ranges
::
size
(
*
r_
)
;
}
constexpr
auto
data
(
)
const
requires
contiguous_
range
<
R
>
{
return
ranges
::
data
(
*
r_
)
;
}
}
;
template
<
class
R
>
ref_view
(
R
&
)
-
>
ref_view
<
R
>
;
}
🔗
template
<
different-from
<
ref_view
>
T
>
requires
see below
constexpr
ref_view
(
T
&
&
t
)
;
2
#
Effects
: Initializes
r_
with
addressof
(
static_
cast
<
R
&
>
(
std
::
forward
<
T
>
(
t
)
)
)
.
3
#
Remarks
: Let
FUN
denote the exposition-only functions
void
FUN
(
R
&
)
;
void
FUN
(
R
&
&
)
=
delete
;
The expression in the
requires-clause
is equivalent to:
convertible_
to
<
T, R
&
>
&
&
requires
{
FUN
(
declval
<
T
>
(
)
)
;
}