Недавно я отвечал на вопрос о неопределенном поведении выполнения p < q
в C, когда p
и q
являются указателями на разные объекты/массивы. Это заставило меня задуматься: C++ имеет такое же (неопределенное) поведение <
в этом случае, но также предлагает стандартный шаблон библиотеки std::less
, который гарантированно возвращает то же самое, что и <
, когда указатели могут быть сравнивать и возвращать последовательный порядок, когда они не могут.
Предлагает ли C что-то с аналогичной функциональностью, которая позволила бы безопасно сравнивать произвольные указатели (с тем же типом)? Я попытался просмотреть стандарт C11 и ничего не нашел, но мой опыт в C на порядки меньше, чем в C++, поэтому я мог легко что-то упустить.