Updated README.md

This commit is contained in:
Steffen Schuemann 2018-09-11 09:23:12 +02:00
parent f54e113b3d
commit 6d4f5b3539

View File

@ -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