Namespaces
Variants

std::basic_common_reference<std::reference_wrapper>

cppreference.net에서 가져옴
 
 
유틸리티 라이브러리
일반 유틸리티
관계 연산자 (C++20에서 폐지)
정수 비교 함수
(C++20)(C++20)(C++20)    
(C++20)
스왑 및 타입 연산
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
공통 어휘 타입
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
함수 객체
함수 호출
(C++17)(C++23)
항등 함수 객체
(C++20)
투명 연산자 래퍼
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

예전 바인더와 어댑터
(C++17까지*)
(C++17까지*)
(C++17까지*)
(C++17까지*)  
(C++17까지*)
(C++17까지*)(C++17까지*)(C++17까지*)(C++17까지*)
(C++20까지*)
(C++20까지*)
(C++17까지*)(C++17까지*)
(C++17까지*)(C++17까지*)

(C++17까지*)
(C++17까지*)(C++17까지*)(C++17까지*)(C++17까지*)
(C++20까지*)
(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으로 표시) 의 공통 참조 타입과 cv 및 참조 한정자가 각각 적용된 타입 T (RQ 및 TQ으로 각각 표시) 은 R의 기본 타입에 lvalue 참조를 적용한 것과 TQ의 공통 참조 타입과 동일합니다.

공통 참조 타입은 R이 유일한 reference_wrapper이고, lvalue 참조가 적용된 R의 기본 타입과 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() {}

참고 항목

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