Namespaces
Variants

operator==, <=>(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까지*)
 
 
friend constexpr bool
    operator==( reference_wrapper lhs, reference_wrapper rhs );
(1) (C++26부터)
friend constexpr bool
    operator==( reference_wrapper lhs, reference_wrapper<const T> rhs );
(2) (C++26부터)
friend constexpr bool
    operator==( reference_wrapper lhs, const T& ref );
(3) (C++26부터)
friend constexpr auto
    operator<=>( reference_wrapper lhs, reference_wrapper rhs );
(4) (C++26부터)
friend constexpr auto
    operator<=>( reference_wrapper lhs, reference_wrapper<const T> rhs );
(5) (C++26부터)
friend constexpr auto
    operator<=>( reference_wrapper lhs, const T& ref );
(6) (C++26부터)

reference_wrapper 객체에 대해 비교 연산을 수행합니다.

1,2) 두 개의 reference_wrapper 객체를 비교합니다. lhs.get() 와 rhs.get() 이 같을 때에만 객체가 같다고 비교됩니다.
1) 이 오버로드는 표현식 lhs.get() == rhs.get() 이 올바른 형식이고 그 결과가 bool 로 변환 가능한 경우에만 오버로드 해결에 참여합니다.
2) 이 오버로드는 다음 모든 조건이 만족되는 경우에만 오버로드 해결에 참여합니다:
  • std::is_const_v<T> 가 false 입니다.
  • 표현식 lhs.get() == rhs.get() 이 올바른 형식이고 그 결과가 bool 로 변환 가능합니다.
3) reference_wrapper 객체를 참조와 비교합니다. lhs.get() 이 ref 과 같을 때에만 매개변수가 같다고 비교됩니다.
이 오버로드는 표현식 lhs.get() == ref 이 올바른 형식이고 그 결과가 bool 로 변환 가능한 경우에만 오버로드 해결에 참여합니다.
4,5) reference_wrappersynth-three-way 를 사용하여 두 개의 객체를 비교합니다.
4) 이 오버로드는 표현식 synth-three-way(lhs.get(), rhs.get()) 가 올바른 형식인 경우에만 오버로드 해결에 참여합니다.
5) 이 오버로드는 다음 모든 조건이 만족되는 경우에만 오버로드 해결에 참여합니다:
  • std::is_const_v<T> 가 false 입니다.
  • 표현식 synth-three-way(lhs.get(), rhs.get()) 가 올바른 형식입니다.
6) reference_wrappersynth-three-way 를 사용하여 객체를 참조와 비교합니다.
이 오버로드는 표현식 synth-three-way(lhs.get(), ref) 가 올바른 형식인 경우에만 오버로드 해결에 참여합니다.

<, <=, >, >=, != 연산자는 각각 와 로부터 operator<=>합성operator==됩니다.

매개변수

lhs, rhs - reference_wrapper 비교할 객체
ref - reference_wrapper 객체와 비교할 참조

반환값

1,2) lhs. get ( ) == rhs. get ( ) .
3) lhs. get ( ) == ref .
4,5) synth-three-way ( lhs. get ( ) , rhs. get ( ) ) .
6) synth-three-way ( lhs. get ( ) , ref ) .

예외

비교가 예외를 발생시킬 때와 무엇을 발생시키는지에 대해 설명합니다.

참고 사항

operator <=> 의 반환 타입은 추론됩니다 return 문으로부터, std:: reference_wrapper < T > 를 인스턴스화할 때 synth-three-way-result <T> 가 형성되지 않는 경우의 하드 에러를 방지하기 위함입니다.

기능 테스트 매크로 값 표준 기능
__cpp_lib_reference_wrapper 202403L (C++26) std::reference_wrapper 에 대한
비교 연산

예제