mirror of
https://git.mirrors.martin98.com/https://github.com/gulrak/filesystem
synced 2025-07-29 06:51:58 +08:00
Updated README.md
This commit is contained in:
parent
f54e113b3d
commit
6d4f5b3539
22
README.md
22
README.md
@ -40,11 +40,19 @@ help. Still, it shouldn't replace `std::filesystem` where full C++17 is
|
||||
available, it doesn't try to be a "better" `std::filesystem`, just a drop-in
|
||||
if you can't use it.
|
||||
|
||||
|
||||
## Tests
|
||||
|
||||
The header comes with a set of unit-tests and uses [CMake](https://cmake.org/)
|
||||
as a build tool and [Catch2](https://github.com/catchorg/Catch2) as test framework.
|
||||
|
||||
It is important to point out, that one test (in path iterators) currently fails on
|
||||
all platforms by design. This is a known conformance-issue
|
||||
([see known issues)](#general-known-issues) and the test is there to not hide
|
||||
the fact and to remember me to think about a way to enhance conformance, without
|
||||
degrading performance considerably.
|
||||
|
||||
|
||||
To build the tests from inside the project directory under macOS or Linux just:
|
||||
|
||||
```cpp
|
||||
@ -63,6 +71,7 @@ as an additional test of conformance. Ideally all tests should compile and
|
||||
succeed with all filesystem implementations, but in reality, there are
|
||||
some differences in behavior.
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
As it is a header-only library, it should be enough to copy the header
|
||||
@ -112,6 +121,7 @@ As this implementation is based on existing code from my private helper
|
||||
classes, it derived some constraints of it, leading to some differences
|
||||
between this and the standard C++17 API.
|
||||
|
||||
|
||||
### LWG Defects
|
||||
|
||||
This implementation has switchable behavior for the LWG defects
|
||||
@ -224,6 +234,18 @@ what final solution the LWG comes up with in the end.
|
||||
|
||||
## Open Issues
|
||||
|
||||
### General Known Issues
|
||||
|
||||
#### fs.path - iterator/const_iterator [(ref)](https://en.cppreference.com/w/cpp/filesystem/path)
|
||||
|
||||
The iterator for path elements is tagged as a [`BidirectionalIterator`](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator)
|
||||
but currently brakes one of its requirements derived from `ForwardIterator` namely:
|
||||
_If `a` and `b` are both dereferenceable, then `a == b` if and only if `*a` and `*b` are bound to the same object._
|
||||
This is due to the fact, that this implementation generates the iteration results on-the-fly.
|
||||
In practice this is not really much of a problem, as still `*a == *b` is valid and usually
|
||||
there should not be comparision of pointers, but still it is a conformance issue and one of
|
||||
the unit test fails knowingly to not hide the fact.
|
||||
|
||||
### Windows
|
||||
|
||||
#### Symbolic Links
|
||||
|
Loading…
x
Reference in New Issue
Block a user