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)
|
|
Определено в заголовочном файле
<functional>
|
||
|
template
<
class
R,
class
T,
template
<
class
>
RQual,
template
<
class
>
TQual
>
|
(1) | (начиная с C++23) |
|
template
<
class
T,
class
R,
template
<
class
>
TQual,
template
<
class
>
RQual
>
|
(2) | (начиная с C++23) |
|
Вспомогательные концепты
|
||
|
template
<
class
R,
class
T,
class
RQ,
class
TQ
>
concept
/*ref-wrap-common-reference-exists-with*/
=
|
(3) | ( только для демонстрации* ) |
Общий ссылочный тип
reference_wrapper
(обозначаемый как
R
) и типа
T
, соответственно применённых с cv и ссылочными квалификаторами (обозначаемыми как
RQ
и
TQ
), эквивалентен общему ссылочному типу базового типа
R
, применённого с lvalue-ссылкой, и типа
TQ
.
Общий ссылочный тип определяется только если
R
является единственным
reference_wrapper
, базовый тип
R
применён с lvalue-ссылкой и
TQ
имеют общий ссылочный тип, к которому
RQ
должен быть преобразуем.
Экспозиционная константа /*is-ref-wrapper*/ < R > имеет значение true тогда и только тогда, когда R является специализацией std::reference_wrapper .
Содержание |
Типы членов
| Тип члена | Определение |
type
|
std:: common_reference_t < typename R :: type & , TQual < T >> ( 1,2 ) |
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Функция |
|---|---|---|---|
__cpp_lib_common_reference_wrapper
|
202302L
|
(C++23) | Сделать std::common_reference_t для std::reference_wrapper ссылочным типом |
Пример
#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() {}
Смотрите также
|
определяет общий ссылочный тип для группы типов
(шаблон класса) |