Namespaces
Variants

operator==,!=,<,<=,>,>=,<=> (std::filesystem::path)

From cppreference.net
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)

Сравнивает два пути лексикографически.

1) Проверяет, равны ли lhs и rhs . Эквивалентно ! ( lhs < rhs ) && ! ( rhs < lhs ) .
2) Проверяет, не равны ли lhs и rhs . Эквивалентно ! ( lhs == rhs ) .
3) Проверяет, является ли lhs меньше rhs . Эквивалентно lhs. compare ( rhs ) < 0 .
4) Проверяет, является ли lhs меньшим или равным rhs . Эквивалентно ! ( rhs < lhs ) .
5) Проверяет, является ли lhs больше, чем rhs . Эквивалентно rhs < lhs .
6) Проверяет, является ли lhs больше или равным rhs . Эквивалентно ! ( lhs < rhs ) .
7) Получает результат трёхстороннего сравнения lhs и rhs . Эквивалентно lhs. compare ( rhs ) <=> 0 .

Эти функции не видны при обычном unqualified или qualified lookup , и могут быть найдены только с помощью argument-dependent lookup , когда std::filesystem::path является ассоциированным классом аргументов. Это предотвращает нежелательные преобразования при наличии using namespace std :: filesystem ; using-directive .

Операторы < , <= , > , >= и != синтезируются соответственно из operator <=> и operator == .

(начиная с C++20)

Содержание

Параметры

lhs, rhs - пути для сравнения

Возвращаемое значение

1-6) true если соответствующее сравнение дает результат, false в противном случае.
7) 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++.

DR Applied to Behavior as published Correct behavior
LWG 3065 C++17 allowed comparison of everything convertible to path in the presence of a using-directive made hidden friend

Смотрите также

сравнивает лексические представления двух путей лексикографически
(public member function)
(C++17)
проверяет, ссылаются ли два пути на один и тот же объект файловой системы
(function)