std:: weak_order
|
헤더에 정의됨
<compare>
|
||
|
inline
namespace
/* unspecified */
{
inline
constexpr
/* unspecified */
weak_order
=
/* unspecified */
;
|
(C++20부터) | |
|
호출 시그니처
|
||
|
template
<
class
T,
class
U
>
requires
/* see below */
|
||
3-way 비교를 사용하여 두 값을 비교하고
std::weak_ordering
타입의 결과를 생성합니다.
t
와
u
를 표현식이라고 하고,
T
와
U
가 각각
decltype
(
(
t
)
)
와
decltype
(
(
u
)
)
를 나타낸다고 할 때,
std
::
weak_order
(
t, u
)
는 다음 표현식과
표현식 동등
합니다:
-
만약
std::
is_same_v
<
std::
decay_t
<
T
>
,
std::
decay_t
<
U
>>
가
true
인 경우:
-
std::
weak_ordering
(
weak_order
(
t, u
)
)
, 이 표현식이
std::weak_order의 선언을 포함하지 않는 컨텍스트에서 오버로드 해결을 수행했을 때 올바른 형식의 표현식인 경우, -
그렇지 않고
T가 부동소수점 타입인 경우:-
만약
std::
numeric_limits
<
T
>
::
is_iec559
가
true
인 경우, 부동소수점 값의 약한 순서 비교를 수행하고(아래 참조) 그 결과를
std::weak_ordering타입의 값으로 반환, -
그렇지 않은 경우,
T의 비교 연산자들이 관찰하는 순서와 일관된std::weak_ordering타입의 값을 생성,
-
만약
std::
numeric_limits
<
T
>
::
is_iec559
가
true
인 경우, 부동소수점 값의 약한 순서 비교를 수행하고(아래 참조) 그 결과를
- 그렇지 않은 경우, std:: weak_ordering ( std:: compare_three_way ( ) ( t, u ) ) , 이 표현식이 올바른 형식인 경우,
- 그렇지 않은 경우, std:: weak_ordering ( std:: strong_order ( t, u ) ) , 이 표현식이 올바른 형식인 경우.
-
std::
weak_ordering
(
weak_order
(
t, u
)
)
, 이 표현식이
- 다른 모든 경우에는, 이 표현식은 올바르지 않은 형식이며, 이는 템플릿 인스턴스화의 직접적인 컨텍스트에서 나타날 때 치환 실패 를 초래할 수 있습니다.
목차 |
커스터마이제이션 포인트 객체
이름
std::weak_order
는
사용자 정의 지점 객체
를 나타내며, 이는 리터럴
semiregular
클래스 타입의 const
함수 객체
입니다. 자세한 내용은
CustomizationPointObject
를 참조하십시오.
IEEE 부동 소수점 타입의 엄격한 약한 순서
x 와 y 가 동일한 IEEE 부동 소수점 타입의 값이고, weak_order_less ( x, y ) 가 C++ 표준에 의해 정의된 엄격한 약순서(strict weak order)에서 x 가 y 보다 앞서는지를 나타내는 부울 결과라고 하자.
- x 와 y 모두 NaN이 아닌 경우, weak_order_less ( x, y ) == true 인 것은 x < y 인 경우와 동일합니다. 즉, 동일한 부동 소수점 값을 나타내는 모든 표현은 동등합니다;
- x 가 음수 NaN이고 y 가 음수 NaN이 아닌 경우, weak_order_less ( x, y ) == true 입니다;
- x 가 양수 NaN이 아니고 y 가 양수 NaN인 경우, weak_order_less ( x, y ) == true 입니다;
- x 와 y 가 모두 동일한 부호를 가진 NaN인 경우, ( weak_order_less ( x, y ) || weak_order_less ( y, x ) ) == false 입니다. 즉, 동일한 부호를 가진 모든 NaN은 동등합니다.
예제
|
이 섹션은 불완전합니다
이유: 예제가 없음 |
참고 항목
|
(C++20)
|
6가지 연산자를 모두 지원하고 대체 불가능한 3-way 비교의 결과 타입
(클래스) |
|
(C++20)
|
3-way 비교를 수행하고
std::strong_ordering
타입의 결과를 생성함
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
3-way 비교를 수행하고
std::partial_ordering
타입의 결과를 생성함
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
3-way 비교를 수행하고
std::weak_ordering
타입의 결과를 생성함,
operator
<=>
를 사용할 수 없는 경우에도 동작함
(커스터마이제이션 포인트 객체) |