//
// Assuming == and < are implemented, provides default implementations of the
// other members

#if ! __cpp_lib_three_way_comparison

      friend constexpr bool operator!= ( const TYPE & __x, const TYPE & __y ) noexcept
      {
        return !( __x == __y );
      }

      friend constexpr bool operator<= ( const TYPE & __x, const TYPE & __y ) noexcept
      {
        return ( __x == __y ) || ( __x < __y );
      }

      friend constexpr bool operator> ( const TYPE & __x, const TYPE & __y ) noexcept
      {
        return ! ( __x <= __y );
      }

      friend constexpr bool operator>= ( const TYPE & __x, const TYPE & __y ) noexcept
      {
        return !( __x < __y );
      }

#endif
