std:: basic_common_reference <std::reference_wrapper>
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Member functions | ||||
Non-member functions | ||||
(C++26)
(C++26)
|
||||
Deduction guides (C++17) | ||||
Helper classes | ||||
basic_common_reference
<std::reference_wrapper>
(C++23)
|
Defined in header
<functional>
|
||
template
<
class
R,
class
T,
template
<
class
>
RQual,
template
<
class
>
TQual
>
|
(1) | (since C++23) |
template
<
class
T,
class
R,
template
<
class
>
TQual,
template
<
class
>
RQual
>
|
(2) | (since C++23) |
Helper concepts
|
||
template
<
class
R,
class
T,
class
RQ,
class
TQ
>
concept
/*ref-wrap-common-reference-exists-with*/
=
|
(3) | ( exposition only* ) |
The common reference type of a
reference_wrapper
(denoted as
R
) and a type
T
, correspondingly applied with cv and reference qualifiers (denoted as
RQ
and
TQ
respectively), is equivalent to a common reference type of underlying type of
R
applied with lvalue reference and the
TQ
.
The common reference type is defined only if
R
is the only
reference_wrapper
, the underlying type of
R
applied with lvalue reference and the
TQ
have a common reference type to which
RQ
must be convertible.
The exposition-only constant /*is-ref-wrapper*/ < R > is true if and only if R is a specialization of std::reference_wrapper .
Member types
Member type | Definition |
type
|
std:: common_reference_t < typename R :: type & , TQual < T >> ( 1,2 ) |
Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_common_reference_wrapper
|
202302L | (C++23) | Make std::common_reference_t of std::reference_wrapper a reference type |
Example
#include <concepts> #include <functional> static_assert(std::same_as<std::common_reference_t<int&, std::reference_wrapper<int>>, int&>); static_assert(std::same_as<std::common_reference_t<std::reference_wrapper<int>&, int&>, int&>); static_assert(std::same_as<std::common_reference_t<int&, const std::reference_wrapper<int>&>, int&>); int main() {}
See also
determines the common reference type of a group of types
(class template) |