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.5
Range adaptor helpers
[range.adaptor.helpers]
namespace
std
::
ranges
{
template
<
class
F,
class
Tuple
>
constexpr
auto
tuple-transform
(
F
&
&
f, Tuple
&
&
t
)
{
//
exposition only
return
apply
(
[
&
]
<
class
.
.
.
Ts
>
(
Ts
&
&
.
.
.
elements
)
{
return
tuple
<
invoke_result_t
<
F
&
, Ts
>
.
.
.
>
(
invoke
(
f, std
::
forward
<
Ts
>
(
elements
)
)
.
.
.
)
;
}
, std
::
forward
<
Tuple
>
(
t
)
)
;
}
template
<
class
F,
class
Tuple
>
constexpr
void
tuple-for-each
(
F
&
&
f, Tuple
&
&
t
)
{
//
exposition only
apply
(
[
&
]
<
class
.
.
.
Ts
>
(
Ts
&
&
.
.
.
elements
)
{
(
static_cast
<
void
>
(
invoke
(
f, std
::
forward
<
Ts
>
(
elements
)
)
)
,
.
.
.
)
;
}
, std
::
forward
<
Tuple
>
(
t
)
)
;
}
template
<
class
T
>
constexpr
T
&
as-lvalue
(
T
&
&
t
)
{
//
exposition only
return
static_cast
<
T
&
>
(
t
)
;
}
template
<
bool
Const,
class
.
.
.
Views
>
concept
all-random-access
=
//
exposition only
(
random_
access_
range
<
maybe-const
<
Const, Views
>
>
&
&
.
.
.
)
;
template
<
bool
Const,
class
.
.
.
Views
>
concept
all-bidirectional
=
//
exposition only
(
bidirectional_
range
<
maybe-const
<
Const, Views
>
>
&
&
.
.
.
)
;
template
<
bool
Const,
class
.
.
.
Views
>
concept
all-forward
=
//
exposition only
(
forward_
range
<
maybe-const
<
Const, Views
>
>
&
&
.
.
.
)
;
}