mirror of
https://git.mirrors.martin98.com/https://github.com/gulrak/filesystem
synced 2025-07-29 20:41:59 +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
|
available, it doesn't try to be a "better" `std::filesystem`, just a drop-in
|
||||||
if you can't use it.
|
if you can't use it.
|
||||||
|
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
The header comes with a set of unit-tests and uses [CMake](https://cmake.org/)
|
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.
|
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:
|
To build the tests from inside the project directory under macOS or Linux just:
|
||||||
|
|
||||||
```cpp
|
```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
|
succeed with all filesystem implementations, but in reality, there are
|
||||||
some differences in behavior.
|
some differences in behavior.
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
As it is a header-only library, it should be enough to copy the header
|
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
|
classes, it derived some constraints of it, leading to some differences
|
||||||
between this and the standard C++17 API.
|
between this and the standard C++17 API.
|
||||||
|
|
||||||
|
|
||||||
### LWG Defects
|
### LWG Defects
|
||||||
|
|
||||||
This implementation has switchable behavior for the 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
|
## 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
|
### Windows
|
||||||
|
|
||||||
#### Symbolic Links
|
#### Symbolic Links
|
||||||
|
Loading…
x
Reference in New Issue
Block a user