Namespaces
Variants

std::compare_strong_order_fallback

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)



 
헤더 <compare>
inline namespace /* unspecified */ {
    inline constexpr /* unspecified */
        compare_strong_order_fallback = /* unspecified */;
}
에 정의됨 (C++20부터)
호출 시그니처
template< class T, class U >
    requires /* see below */
constexpr std::strong_ordering
    compare_strong_order_fallback( T&& t, U&& u ) noexcept(/* see below */);
(C++20부터)

부분 표현식 t과 u에 대해 삼자 비교를 수행하여 std::strong_ordering 타입의 결과를 생성합니다. 연산자 <=>를 사용할 수 없는 경우에도 마찬가지입니다.

std::decay_t<T>과 std::decay_t<U>이 같은 타입인 경우, std::compare_strong_order_fallback(t, u)는 다음에 대해 표현식-동등합니다.

  • std::strong_order(t, u): 잘 구성된 표현식인 경우;
  • 그렇지 않으면, t == u ? std::strong_ordering::equal :
    t < u ? std::strong_ordering::less :
             std::strong_ordering::greater
표현식 t == u과 t < u이 모두 잘 구성되어 있고, decltype(t == u)과 decltype(t < u) 각각이 부울-테스트 가능을 모델링하는 경우. 단, t과 u은 오직 한 번만 평가됩니다.

다른 모든 경우에 std::compare_strong_order_fallback(t, u)는 잘못 구성되며, 템플릿 인스턴스화의 즉시 컨텍스트에 나타날 경우 치환 실패가 발생할 수 있습니다.

커스터마이제이션 포인트 객체

이름 std::compare_strong_order_fallback 은 사용자 정의 지점 객체 를 나타내며, 이는 함수 객체 의 const 리터럴 semiregular 클래스 타입입니다. 자세한 내용은 CustomizationPointObject 를 참조하십시오.

예제

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2114
( P2167R3 )
C++20 폴백 메커니즘이 반환 타입이
bool 로 변환 가능하기만을 요구함
제약 조건이 강화됨

참고 항목

3방향 비교를 수행하고 std::strong_ordering 타입의 결과를 생성함
(커스터마이제이션 포인트 객체)