Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
22
General utilities library
[utilities]
22.10
Function objects
[function.objects]
22.10.6
Class template
reference_
wrapper
[refwrap]
22.10.6.8
common_
reference
related specializations
[refwrap.common.ref]
🔗
namespace
std
{
template
<
class
T
>
constexpr
bool
is-ref-wrapper
=
false
;
//
exposition only
template
<
class
T
>
constexpr
bool
is-ref-wrapper
<
reference_wrapper
<
T
>
>
=
true
;
template
<
class
R,
class
T,
class
RQ,
class
TQ
>
concept
ref-wrap-common-reference-exists-with
=
//
exposition only
is-ref-wrapper
<
R
>
&
&
requires
{
typename
common_reference_t
<
typename
R
::
type
&
, TQ
>
;
}
&
&
convertible_
to
<
RQ, common_reference_t
<
typename
R
::
type
&
, TQ
>
>
;
template
<
class
R,
class
T,
template
<
class
>
class
RQual,
template
<
class
>
class
TQual
>
requires
(
ref-wrap-common-reference-exists-with
<
R, T, RQual
<
R
>
, TQual
<
T
>
>
&
&
!
ref-wrap-common-reference-exists-with
<
T, R, TQual
<
T
>
, RQual
<
R
>
>
)
struct
basic_common_reference
<
R, T, RQual, TQual
>
{
using
type
=
common_reference_t
<
typename
R
::
type
&
, TQual
<
T
>
>
;
}
;
template
<
class
T,
class
R,
template
<
class
>
class
TQual,
template
<
class
>
class
RQual
>
requires
(
ref-wrap-common-reference-exists-with
<
R, T, RQual
<
R
>
, TQual
<
T
>
>
&
&
!
ref-wrap-common-reference-exists-with
<
T, R, TQual
<
T
>
, RQual
<
R
>
>
)
struct
basic_common_reference
<
T, R, TQual, RQual
>
{
using
type
=
common_reference_t
<
typename
R
::
type
&
, TQual
<
T
>
>
;
}
;
}