This reduces the size and alignment of all three comparison category types to a single byte. The partial_ordering::_M_is_ordered flag is replaced by the value 0x02 in the _M_value member. This also optimizes conversion and comparison operators to avoid conditional branches where possible, by comparing _M_value to constants or using bitwise operations to correctly handle the unordered state. * libsupc++/compare (__cmp_cat::type): Define typedef for underlying type of enumerations and comparison category types. (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type. (__cmp_cat::_Ncmp::unordered): Change value to 2. (partial_ordering::_M_value, weak_ordering::_M_value) (strong_ordering::_M_value): Change type to __cmp_cat::type. (partial_ordering::_M_is_ordered): Remove data member. (partial_ordering): Use second bit of _M_value for unordered. Adjust comparison operators. (weak_ordering::operator partial_ordering): Simplify to remove branches. (operator<=>(unspecified, weak_ordering)): Likewise. (strong_ordering::operator partial_ordering): Likewise. (strong_ordering::operator weak_ordering): Likewise. (operator<=>(unspecified, strong_ordering)): Likewise. * testsuite/18_support/comparisons/categories/partialord.cc: New test. * testsuite/18_support/comparisons/categories/strongord.cc: New test. * testsuite/18_support/comparisons/categories/weakord.cc: New test.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| aligned_alloc | Loading commit data... | |
| bad_alloc | Loading commit data... | |
| bad_cast | Loading commit data... | |
| bad_exception | Loading commit data... | |
| bad_typeid | Loading commit data... | |
| byte | Loading commit data... | |
| comparisons | Loading commit data... | |
| exception | Loading commit data... | |
| exception_ptr | Loading commit data... | |
| headers | Loading commit data... | |
| initializer_list | Loading commit data... | |
| launder | Loading commit data... | |
| max_align_t/requirements | Loading commit data... | |
| nested_exception | Loading commit data... | |
| numeric_limits | Loading commit data... | |
| quick_exit | Loading commit data... | |
| type_info | Loading commit data... | |
| uncaught_exception | Loading commit data... | |
| uncaught_exceptions | Loading commit data... | |
| 50594.cc | Loading commit data... | |
| 51333.cc | Loading commit data... | |
| cxa_vec.cc | Loading commit data... | |
| destroying_delete.cc | Loading commit data... | |
| free_eh_pool.cc | Loading commit data... | |
| new_aligned.cc | Loading commit data... | |
| new_delete_placement.cc | Loading commit data... | |
| new_handler.cc | Loading commit data... | |
| new_nothrow.cc | Loading commit data... | |
| pthread_guard.cc | Loading commit data... | |
| set_terminate.cc | Loading commit data... | |
| set_unexpected.cc | Loading commit data... | |
| terminate_handler.cc | Loading commit data... | |
| unexpected_handler.cc | Loading commit data... |