https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96526
--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>: https://gcc.gnu.org/g:9805965e3551b66b5bd751d6076791d00cdeb137 commit r12-7468-g9805965e3551b66b5bd751d6076791d00cdeb137 Author: Jonathan Wakely <jwak...@redhat.com> Date: Thu Mar 3 12:34:27 2022 +0000 libstdc++: Implement std::strong_order for floating-point types [PR96526] This removes a FIXME in <compare>, defining the total order for floating-point types. I originally opened PR96526 to request a new compiler built-in to implement this, but now that we have std::bit_cast it can be done entirely in the library. The implementation is based on the glibc definitions of totalorder, totalorderf, totalorderl etc. I think this works for all the types that satisfy std::floating_point today, and should also work for the types expected to be added by P1467 except for std::bfloat16_t. It also supports some additional types that don't currently satisfy std::floating_point, such as __float80, but we probably do want that to satisfy the concept for non-strict modes. libstdc++-v3/ChangeLog: PR libstdc++/96526 * libsupc++/compare (strong_order): Add missing support for floating-point types. * testsuite/18_support/comparisons/algorithms/strong_order_floats.cc: New test.