operator==,!=,<,<=,>,>=,<=>(std::filesystem::path)
friend bool operator==( const path& lhs, const path& rhs ) noexcept; |
(1) | (начиная с C++17) |
friend bool operator!=( const path& lhs, const path& rhs ) noexcept; |
(2) | (начиная с C++17) (до C++20) |
friend bool operator<( const path& lhs, const path& rhs ) noexcept; |
(3) | (начиная с C++17) (до C++20) |
friend bool operator<=( const path& lhs, const path& rhs ) noexcept; |
(4) | (начиная с C++17) (до C++20) |
friend bool operator>( const path& lhs, const path& rhs ) noexcept; |
(5) | (начиная с C++17) (до C++20) |
friend bool operator>=( const path& lhs, const path& rhs ) noexcept; |
(6) | (начиная с C++17) (до C++20) |
friend std::strong_ordering operator<=>( const path& lhs, const path& rhs ) noexcept; |
(7) | (начиная с C++20) |
Выполняет лексикографическое сравнение двух путей.
lhs и rhs равны. Эквивалентно !(lhs < rhs) && !(rhs < lhs).lhs и rhs неравны. Эквивалентно !(lhs == rhs).lhs меньше, чем rhs. Эквивалентно lhs.compare(rhs) < 0.lhs меньше, чем rhs, или равно ему. Эквивалентно !(rhs < lhs).lhs больше, чем rhs. Эквивалентно rhs < lhs.lhs больше, чем rhs, или равно ему. Эквивалентно !(lhs < rhs).lhs и rhs. Эквивалентно lhs.compare(rhs) <=> 0.Эти функции не видны обычному неквалифицированному или квалифицированному поиску и могут быть найдены только с помощью зависящего от аргумента поиска, когда std::filesystem::path является ассоциированным классом аргументом. This prevents undesirable conversions in the presence of a using namespace std::filesystem; using-directive.
|
Операторы |
(начиная с C++20) |
Параметры
| lhs, rhs | — | пути для сравнения |
Возвращаемое значение
true, если соответствующее сравнение истинно, иначе false.std::strong_ordering::less, если lhs меньше, чем rhs, иначе std::strong_ordering::greater, если rhs больше, чем lhs, иначе std::strong_ordering::equal.Заметки
Равенство и эквивалентность путей имеют различную семантику.
В случае равенства, по определению оператора operator==, сравнивается лишь лексическое представление путей. В связи с этим path("a") == path("b") никогда не даст результат true.
В случае эквивалентности, по определению std::filesystem::equivalent(), проверяется, соответствуют ли два пути одному объекту файловой системы. Потому equivalent("a", "b") вернет результат true, если пути представляют один и тот же файл.
Пример
| Этот раздел не завершён Причина: нет примера |
Отчет об ошибках
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
| Номер | Применён | Поведение в стандарте | Корректное поведение |
|---|---|---|---|
| LWG 3065 | C++17 | допускалось сравнение любых объектов, способных преобразовываться к классу path, при использовании using-директивы
|
сделаны скрытыми дружественными |
См. также
| лексикографическое сравнение двух путей (public функция-элемент) | |
(C++17) |
проверяет, ссылаются ли два пути на один и тот же объект файловой системы (функция) |