C++20 Library support for operator<=> <compare>

Library support for
operator<=>
<compare>
3방향 비교 연산자 (a.k.a 우주선 연산자)
0 : 같음
양수 : 크다
음수 : 작다
<compare> 헤더를 추가해야 사용 가능
단순하고 강력한 비교를 위해 추가 됨
연산자 오버로딩
기존 6개의 비교 연산자
모두 적용됨
default 일 경우 멤버 변수
선언 순서에 따라 비교
연산자 오버로딩
3방향 비교 연산자 반환 타입
3방향 비교 연산자는
strong_ordering, weak_ordering, partial_ordering
중 하나의 타입으로 반환이 됨
~ordering
strong weak partial
less : a < b O O O
equivalent : !(a > b) && !(a < b) ex. insert O O O
equal : a == b ex. find O X X
greater : a > b O O O
unordered : 비교 불가능한 값 지원 ex. Nan X X O
더 강한 순서는 약한 순서로 암묵적 변환이 가능
연산자 오버로딩시 반환 타입을 지정해 줌으로서 어떤
객체인지 알려줄 수도 있다
1 von 6

Recomendados

C++ 20 class template argument deduction for alias templates von
C++ 20 class template argument deduction for alias templatesC++ 20 class template argument deduction for alias templates
C++ 20 class template argument deduction for alias templates진화 손
3 views3 Folien
C++ 20 Make stateful allocator propagation more consistent for operator+(basi... von
C++ 20 Make stateful allocator propagation more consistent for operator+(basi...C++ 20 Make stateful allocator propagation more consistent for operator+(basi...
C++ 20 Make stateful allocator propagation more consistent for operator+(basi...진화 손
5 views5 Folien
C++ 20 Unevaluated asm-declaration in constexpr functions von
C++ 20 Unevaluated asm-declaration in constexpr functionsC++ 20 Unevaluated asm-declaration in constexpr functions
C++ 20 Unevaluated asm-declaration in constexpr functions진화 손
4 views3 Folien
C++20 Utility functions to implement uses-allocator construction.pdf von
C++20 Utility functions to implement uses-allocator construction.pdfC++20 Utility functions to implement uses-allocator construction.pdf
C++20 Utility functions to implement uses-allocator construction.pdf진화 손
7 views9 Folien
C++ 20 std__reference_wrapper for incomplete types von
C++ 20 std__reference_wrapper for incomplete typesC++ 20 std__reference_wrapper for incomplete types
C++ 20 std__reference_wrapper for incomplete types진화 손
8 views2 Folien
C++ 20 Stronger Unicode requirements von
C++ 20 Stronger Unicode requirementsC++ 20 Stronger Unicode requirements
C++ 20 Stronger Unicode requirements진화 손
5 views2 Folien

Más contenido relacionado

Más de 진화 손

C++ 20 Relaxing the range-for loop customization point finding rules von
C++ 20 Relaxing the range-for loop customization point finding rulesC++ 20 Relaxing the range-for loop customization point finding rules
C++ 20 Relaxing the range-for loop customization point finding rules진화 손
6 views2 Folien
C++ 20 Relaxing the structured bindings customization point finding rules von
C++ 20 Relaxing the structured bindings customization point finding rulesC++ 20 Relaxing the structured bindings customization point finding rules
C++ 20 Relaxing the structured bindings customization point finding rules진화 손
7 views4 Folien
C++20 explicit(bool) von
C++20 explicit(bool)C++20 explicit(bool)
C++20 explicit(bool)진화 손
6 views3 Folien
C++20 std::map::contains von
C++20 std::map::containsC++20 std::map::contains
C++20 std::map::contains진화 손
5 views3 Folien
C++20 Comparing unordered containers von
C++20 Comparing unordered containersC++20 Comparing unordered containers
C++20 Comparing unordered containers진화 손
8 views6 Folien
C++20 Attributes [[likely]] and [[unlikely]] von
C++20 Attributes [[likely]] and [[unlikely]]C++20 Attributes [[likely]] and [[unlikely]]
C++20 Attributes [[likely]] and [[unlikely]]진화 손
21 views4 Folien

Más de 진화 손(20)

C++ 20 Relaxing the range-for loop customization point finding rules von 진화 손
C++ 20 Relaxing the range-for loop customization point finding rulesC++ 20 Relaxing the range-for loop customization point finding rules
C++ 20 Relaxing the range-for loop customization point finding rules
진화 손6 views
C++ 20 Relaxing the structured bindings customization point finding rules von 진화 손
C++ 20 Relaxing the structured bindings customization point finding rulesC++ 20 Relaxing the structured bindings customization point finding rules
C++ 20 Relaxing the structured bindings customization point finding rules
진화 손7 views
C++20 explicit(bool) von 진화 손
C++20 explicit(bool)C++20 explicit(bool)
C++20 explicit(bool)
진화 손6 views
C++20 std::map::contains von 진화 손
C++20 std::map::containsC++20 std::map::contains
C++20 std::map::contains
진화 손5 views
C++20 Comparing unordered containers von 진화 손
C++20 Comparing unordered containersC++20 Comparing unordered containers
C++20 Comparing unordered containers
진화 손8 views
C++20 Attributes [[likely]] and [[unlikely]] von 진화 손
C++20 Attributes [[likely]] and [[unlikely]]C++20 Attributes [[likely]] and [[unlikely]]
C++20 Attributes [[likely]] and [[unlikely]]
진화 손21 views
C++ 20 Lambdas in unevaluated contexts von 진화 손
C++ 20 Lambdas in unevaluated contextsC++ 20 Lambdas in unevaluated contexts
C++ 20 Lambdas in unevaluated contexts
진화 손4 views
C++20 const mismatch with defaulted copy constructor von 진화 손
C++20 const mismatch with defaulted copy constructorC++20 const mismatch with defaulted copy constructor
C++20 const mismatch with defaulted copy constructor
진화 손5 views
C++20 Atomic std::shared_ptr and std::weak_ptr von 진화 손
C++20 Atomic std::shared_ptr and std::weak_ptrC++20 Atomic std::shared_ptr and std::weak_ptr
C++20 Atomic std::shared_ptr and std::weak_ptr
진화 손11 views
C++20 Default member initializers for bit-fields von 진화 손
C++20 Default member initializers for bit-fieldsC++20 Default member initializers for bit-fields
C++20 Default member initializers for bit-fields
진화 손10 views
C++ 20 constexpr for algorithm and utility von 진화 손
C++ 20 constexpr for  algorithm and utilityC++ 20 constexpr for  algorithm and utility
C++ 20 constexpr for algorithm and utility
진화 손8 views
C++17 init-statements for if and switch von 진화 손
C++17 init-statements for if and switchC++17 init-statements for if and switch
C++17 init-statements for if and switch
진화 손9 views
C++17 Aggregate classes with base classes von 진화 손
C++17 Aggregate classes with base classesC++17 Aggregate classes with base classes
C++17 Aggregate classes with base classes
진화 손8 views
C++17 std::byte von 진화 손
C++17 std::byteC++17 std::byte
C++17 std::byte
진화 손108 views
C++17 Dynamic memory allocation for over-aligned data von 진화 손
C++17 Dynamic memory allocation for over-aligned dataC++17 Dynamic memory allocation for over-aligned data
C++17 Dynamic memory allocation for over-aligned data
진화 손18 views
C++17 return type of emplace_ functions of some containers changed from void ... von 진화 손
C++17 return type of emplace_ functions of some containers changed from void ...C++17 return type of emplace_ functions of some containers changed from void ...
C++17 return type of emplace_ functions of some containers changed from void ...
진화 손4 views
C++17 [[fallthrough]] attribute von 진화 손
C++17 [[fallthrough]] attributeC++17 [[fallthrough]] attribute
C++17 [[fallthrough]] attribute
진화 손7 views
C++ 17 __has_include in preprocessor conditionals von 진화 손
C++ 17 __has_include in preprocessor conditionalsC++ 17 __has_include in preprocessor conditionals
C++ 17 __has_include in preprocessor conditionals
진화 손5 views
C++17 Folding expressions von 진화 손
C++17 Folding expressionsC++17 Folding expressions
C++17 Folding expressions
진화 손3 views

C++20 Library support for operator<=> <compare>

  • 2. 3방향 비교 연산자 (a.k.a 우주선 연산자) 0 : 같음 양수 : 크다 음수 : 작다 <compare> 헤더를 추가해야 사용 가능 단순하고 강력한 비교를 위해 추가 됨
  • 3. 연산자 오버로딩 기존 6개의 비교 연산자 모두 적용됨 default 일 경우 멤버 변수 선언 순서에 따라 비교
  • 5. 3방향 비교 연산자 반환 타입 3방향 비교 연산자는 strong_ordering, weak_ordering, partial_ordering 중 하나의 타입으로 반환이 됨
  • 6. ~ordering strong weak partial less : a < b O O O equivalent : !(a > b) && !(a < b) ex. insert O O O equal : a == b ex. find O X X greater : a > b O O O unordered : 비교 불가능한 값 지원 ex. Nan X X O 더 강한 순서는 약한 순서로 암묵적 변환이 가능 연산자 오버로딩시 반환 타입을 지정해 줌으로서 어떤 객체인지 알려줄 수도 있다