Namespaces
Variants

std:: basic_common_reference <std::reference_wrapper>

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
헤더 파일에 정의됨 <functional>
template < class R, class T,

template < class > RQual, template < 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 > ;
(1) (C++23부터)
template < class T, class R,

template < class > TQual, template < 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 > ;
(2) (C++23부터)
도우미 개념
template < class R, class T, class RQ, class TQ >

concept /*ref-wrap-common-reference-exists-with*/ =
/*is-ref-wrapper*/ < R > &&
requires { typename std:: common_reference_t < typename R :: type & , TQ > ; } &&

std :: convertible < RQ, std:: common_reference_t < typename R :: type & , TQ >> ;
(3) ( 설명 전용* )

reference_wrapper 의 공통 참조 타입( R 로 표기)과 타입 T 의 공통 참조 타입(각각 cv 및 참조 한정자가 적용된 RQ TQ 로 표기)은, lvalue 참조가 적용된 R 의 기반 타입과 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() {}

참고 항목

여러 타입들의 공통 참조 타입을 결정합니다
(클래스 템플릿)