From 6d4f5b35392fcf6634ae60d1708fcb3b09861833 Mon Sep 17 00:00:00 2001 From: Steffen Schuemann Date: Tue, 11 Sep 2018 09:23:12 +0200 Subject: [PATCH] Updated README.md --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index 8631a8a..e9a7e66 100644 --- a/README.md +++ b/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