| Technical Specification | ||||
| Filesystem library(filesystem TS) | ||||
| Library fundamentals(library fundamentals TS) | ||||
| Library fundamentals 2(library fundamentals TS v2) | ||||
| Library fundamentals 3(library fundamentals TS v3) | ||||
| Extensions for parallelism(parallelism TS) | ||||
| Extensions for parallelism 2(parallelism TS v2) | ||||
| Extensions for concurrency(concurrency TS) | ||||
| Extensions for concurrency 2(concurrency TS v2) | ||||
| Concepts(concepts TS) | ||||
| Ranges(ranges TS) | ||||
| Reflection(reflection TS) | ||||
| Mathematical special functions(special functions TR) | ||||
| Experimental Non-TS | ||||
| Pattern Matching | ||||
| Linear Algebra | ||||
| std::execution | ||||
| Contracts | ||||
| 2D Graphics |
| Classes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| File types | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <experimental/filesystem> | ||
bool equivalent(const path& p1,const path& p2); bool equivalent(const path& p1,const path& p2, error_code& ec); | (1) | (filesystem TS) |
Checks whether the pathsp1 andp2 refer to the same file or directory and have the same file status as determined bystatus (symlinks are followed).
Ifp1 orp2 does not exist or if their file type is not file, directory, or symlink (as determined byis_other), an error is reported.
The non-throwing overload returnsfalse on errors.
Contents |
| p1, p2 | - | paths to check for equivalence |
| ec | - | out-parameter for error reporting in the non-throwing overload |
true if thep1 andp2 refer to the same file or directory and their file status is the same.false otherwise.
Two paths are considered to resolve to the same file system entity ifst_dev andst_ino of their POSIXstat structure, obtained as if by POSIXstat, are equal (meaning, the files are located on the same device at the same location).
In particular, all hard links for the same file or directory are equivalent, and a symlink and its target on the same file system are equivalent.
#include <cstdint>#include <experimental/filesystem>#include <iostream>namespace fs= std::experimental::filesystem; int main(){// hard link equivalency fs::path p1="."; fs::path p2= fs::current_path();if(fs::equivalent(p1, p2))std::cout<< p1<<" is equivalent to "<< p2<<'\n'; // symlink equivalency fs::path p3="/lib/libc.so.6"; fs::path p4= p3.parent_path()/ fs::read_symlink(p3);if(fs::equivalent(p3, p4))std::cout<< p3<<" is equivalent to "<< p4<<'\n';}
Possible output:
"." is equivalent to "/var/tmp/test""/lib/libc.so.6" is equivalent to "/lib/libc-2.12.so"
| determines file attributes determines file attributes, checking the symlink target (function)[edit] |