Частичный порядок в C++
Особое значение NaN среди чисел с плавающей точкой ломает обычный линейный порядок при сравнении.
Такой случай описывает std::partial_ordering.
Признак «ни равно, ни меньше, ни больше»
проверяют через функцию std::is_neq.
Запишем сравнение обычного числа с NaN
и выведем результат:
#include <compare>
#include <cmath>
#include <iostream>
double plain = 2.0;
double quiet = std::nan("");
auto order = plain <=> quiet;
std::cout << std::is_neq(order) << "\n";
На экран попадет 1: порядок помечает
пару как неупорядоченную относительно
обычного сравнения на прямой.