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... |