operator==,!=,<,<=,>,>=,<=>(std::filesystem::path)
friend bool operator==( const path& lhs, const path& rhs ) noexcept; |
(1) | (since C++17) |
friend bool operator!=( const path& lhs, const path& rhs ) noexcept; |
(2) | (since C++17) (until C++20) |
friend bool operator<( const path& lhs, const path& rhs ) noexcept; |
(3) | (since C++17) (until C++20) |
friend bool operator<=( const path& lhs, const path& rhs ) noexcept; |
(4) | (since C++17) (until C++20) |
friend bool operator>( const path& lhs, const path& rhs ) noexcept; |
(5) | (since C++17) (until C++20) |
friend bool operator>=( const path& lhs, const path& rhs ) noexcept; |
(6) | (since C++17) (until C++20) |
friend std::strong_ordering operator<=>( const path& lhs, const path& rhs ) noexcept; |
(7) | (since C++20) |
Compares two paths lexicographically.
lhs
and
rhs
are equal. Equivalent to
!(lhs < rhs) && !(rhs < lhs)
.
lhs
and
rhs
are not equal. Equivalent to
!(lhs == rhs)
.
lhs
is less than
rhs
. Equivalent to
lhs.compare(rhs) < 0
.
lhs
is less than or equal to
rhs
. Equivalent to
!(rhs < lhs)
.
lhs
is greater than
rhs
. Equivalent to
rhs < lhs
.
lhs
is greater than or equal to
rhs
. Equivalent to
!(lhs < rhs)
.
lhs
and
rhs
. Equivalent to
lhs.compare(rhs) <=> 0
.
These functions are not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when std::filesystem::path
is an associated class of the arguments. This prevents undesirable conversions in the presence of a using namespace std::filesystem;
using-directive.
The |
(since C++20) |
Parameters
lhs, rhs | - | the paths to compare |
Return value
true
if the corresponding comparison yields,
false
otherwise.
std::strong_ordering::less
if
lhs
is less than
rhs
, otherwise
std::strong_ordering::greater
if
rhs
is less than
lhs
, otherwise
std::strong_ordering::equal
.
Notes
Path equality and equivalence have different semantics.
In the case of equality, as determined by operator==
, only lexical representations are compared. Therefore, path("a") == path("b")
is never true
.
In the case of equivalence, as determined by std::filesystem::equivalent()
, it is checked whether two paths resolve to the same file system object. Thus equivalent("a", "b")
will return true
if the paths resolve to the same file.
Example
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
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 |
See also
compares the lexical representations of two paths lexicographically (public member function) |
|
(C++17)
|
checks whether two paths refer to the same file system object (function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/filesystem/path/operator_cmp