25
Ranges library
[ranges]
25.7
Range adaptors
[range.adaptors]
25.7.6
All view
[range.all]
25.7.6.3
Class template
owning_
view
[range.owning.view]
1
#
owning_
view
is a move-only view of the elements of some other range
.
namespace
std
::
ranges
{
template
<
range
R
>
requires
movable
<
R
>
&
&
(
!
is-initializer-list
<
R
>
)
// see
[range.
refinements]
class
owning_view
:
public
view_interface
<
owning_view
<
R
>
>
{
private
:
R
r_
=
R
(
)
;
//
exposition only
public
:
owning_view
(
)
requires
default_
initializable
<
R
>
=
default
;
constexpr
owning_view
(
R
&
&
t
)
; owning_view
(
owning_view
&
&
)
=
default
; owning_view
&
operator
=
(
owning_view
&
&
)
=
default
;
constexpr
R
&
base
(
)
&
noexcept
{
return
r_
;
}
constexpr
const
R
&
base
(
)
const
&
noexcept
{
return
r_
;
}
constexpr
R
&
&
base
(
)
&
&
noexcept
{
return
std
::
move
(
r_
)
;
}
constexpr
const
R
&
&
base
(
)
const
&
&
noexcept
{
return
std
::
move
(
r_
)
;
}
constexpr
iterator_t
<
R
>
begin
(
)
{
return
ranges
::
begin
(
r_
)
;
}
constexpr
sentinel_t
<
R
>
end
(
)
{
return
ranges
::
end
(
r_
)
;
}
constexpr
auto
begin
(
)
const
requires
range
<
const
R
>
{
return
ranges
::
begin
(
r_
)
;
}
constexpr
auto
end
(
)
const
requires
range
<
const
R
>
{
return
ranges
::
end
(
r_
)
;
}
constexpr
bool
empty
(
)
requires
requires
{
ranges
::
empty
(
r_
)
;
}
{
return
ranges
::
empty
(
r_
)
;
}
constexpr
bool
empty
(
)
const
requires
requires
{
ranges
::
empty
(
r_
)
;
}
{
return
ranges
::
empty
(
r_
)
;
}
constexpr
auto
size
(
)
requires
sized_
range
<
R
>
{
return
ranges
::
size
(
r_
)
;
}
constexpr
auto
size
(
)
const
requires
sized_
range
<
const
R
>
{
return
ranges
::
size
(
r_
)
;
}
constexpr
auto
data
(
)
requires
contiguous_
range
<
R
>
{
return
ranges
::
data
(
r_
)
;
}
constexpr
auto
data
(
)
const
requires
contiguous_
range
<
const
R
>
{
return
ranges
::
data
(
r_
)
;
}
}
;
}
🔗
constexpr
owning_view
(
R
&
&
t
)
;
2
#
Effects
: Initializes
r_
with
std
::
move
(
t
)
.