fix std::filesystem::path regression
Antiquated type traits performed an incorrect and insufficient check.

`std::filesystem::path` used to work by "chance" thanks to brittle
constraints, but the clean-up performed in #3020 broke these.

Fixes #3070

- [x]  Changes are described in the pull request, or an [existing issue is referenced](https://github.com/nlohmann/json/issues).
- [x]  The test suite [compiles and runs](https://github.com/nlohmann/json/blob/develop/README.md#execute-unit-tests) without error.
- [x]  [Code coverage](https://coveralls.io/github/nlohmann/json) is 100%. Test cases can be added by editing the [test suite](https://github.com/nlohmann/json/tree/develop/test/src).
- [x]  The source code is amalgamated; that is, after making changes to the sources in the `include/nlohmann` directory, run `make amalgamate` to create the single-header file `single_include/nlohmann/json.hpp`. The whole process is described [here](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md#files-to-change).
{"label": "nlohmann:develop", "ref": "develop", "sha": "4b1cb9eee129632abc4fa684688691568e26c9e9"}
<!-- Provide a concise summary of the issue in the title above. -->

#### What is the issue you have?

Version 3.10.3 breaks backward-compatibility with 3.10.2.

#### Please describe the steps to reproduce the issue.

1. Compile [bear](https://github.com/rizsotto/Bear) 3.0.16 with nlohmann/json 3.10.3
2. Compilation will fail (logs below)
3. Compile [bear](https://github.com/rizsotto/Bear) 3.0.16 with nlohmann/json 3.10.2
4. Compilation will succeed

#### Can you provide a small but working code example?


#### What is the expected behavior?

Version 3.10.3 should be backwards-compatible with 3.10.2.

#### And what is the actual behavior instead?

Version 3.10.3 breaks backward-compatibility with codebase based on 3.10.0.

#### Which compiler and operating system are you using?

- Compiler: gcc 11.2.0
- Operating system: gentoo

#### Which version of the library did you use?

- [x] latest release version 3.10.3
- [ ] other release - please state the version: ___
- [ ] the `develop` branch

#### If you experience a compilation error: can you [compile and run the unit tests](https://github.com/nlohmann/json#execute-unit-tests)?

- [ ] yes
- [x] no - please copy/paste the error message below

```
cmake -C /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/gentoo_common_config.cmake -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_UNIT_TESTS=OFF -DENABLE_FUNC_TESTS=OFF -DCMAKE_BUILD_TYPE=Gentoo -DCMAKE_TOOLCHAIN_FILE=/var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/gentoo_toolchain.cmake  /var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16
loading initial cache file /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/gentoo_common_config.cmake
-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for nlohman_json dependency
-- Looking for nlohman_json dependency -- found
-- Looking for fmt dependency
-- Looking for fmt dependency -- found
-- Looking for spdlog dependency
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Looking for spdlog dependency -- found
-- Looking for gRPC::grpc++ dependency
-- Found PkgConfig: x86_64-pc-linux-gnu-pkg-config (found version "1.8.0")
-- Checking for modules 'protobuf>=3.11;grpc++>=1.26'
--   Found protobuf, version 3.17.3
--   Found grpc++, version 1.41.0
-- Looking for gRPC::grpc++ dependency -- found
-- Looking for protoc
-- Looking for protoc -- found
-- Looking for grpc_cpp_plugin
-- Looking for grpc_cpp_plugin -- found
-- <<< Gentoo configuration >>>
Build type      Gentoo
Install path    /usr
Compiler flags:
C               -march=native -ggdb -O2 -pipe
C++             -march=native -ggdb -O2 -pipe
Linker flags:
Executable      -Wl,-O1 -Wl,--as-needed
Module          -Wl,-O1 -Wl,--as-needed
Shared          -Wl,-O1 -Wl,--as-needed

-- Configuring done
-- Generating done
-- Build files have been written to: /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build
!!! Failed to set new SELinux execution context. Is your current SELinux context allowed to run Portage?
 * Source directory (CMAKE_USE_DIR): "/var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16"
 * Build directory  (BUILD_DIR):     "/var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build"
ninja -v -j16 -l12.0
[1/8] cd /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build && /usr/bin/cmake -E make_directory /var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source && /usr/bin/cmake -E make_directory /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Build/BearSource && /usr/bin/cmake -E make_directory /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Install/BearSource && /usr/bin/cmake -E make_directory /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/tmp/BearSource && /usr/bin/cmake -E make_directory /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Stamp/BearSource && /usr/bin/cmake -E make_directory /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Download/BearSource && /usr/bin/cmake -E make_directory /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Stamp/BearSource && /usr/bin/cmake -E touch /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Stamp/BearSource/BearSource-mkdir
[2/8] cd /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build && /usr/bin/cmake -E echo_append && /usr/bin/cmake -E touch /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Stamp/BearSource/BearSource-download
[3/8] cd /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build && /usr/bin/cmake -E echo_append && /usr/bin/cmake -E touch /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Stamp/BearSource/BearSource-update
[4/8] cd /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build && /usr/bin/cmake -E echo_append && /usr/bin/cmake -E touch /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Stamp/BearSource/BearSource-patch
[5/8] cd /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Build/BearSource && /usr/bin/cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_PROJECT_VERSION=3.0.16 -DCMAKE_C_COMPILER=/usr/bin/x86_64-pc-linux-gnu-gcc -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=OFF "-DCMAKE_CXX_FLAGS:STRING=-march=native -ggdb -O2 -pipe" -DCMAKE_CXX_COMPILER:STRING=/usr/bin/x86_64-pc-linux-gnu-g++ -DPKG_CONFIG_EXECUTABLE:PATH=x86_64-pc-linux-gnu-pkg-config -DCMAKE_TOOLCHAIN_FILE:PATH=/var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/gentoo_toolchain.cmake -GNinja -C/var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/tmp/BearSource/BearSource-cache-Gentoo.cmake /var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source && /usr/bin/cmake -E touch /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Stamp/BearSource/BearSource-configure
loading initial cache file /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/tmp/BearSource/BearSource-cache-Gentoo.cmake
-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found nlohmann_json: /usr/lib64/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.10.3")
-- Found PkgConfig: x86_64-pc-linux-gnu-pkg-config (found version "1.8.0")
-- Checking for modules 'protobuf;grpc++'
--   Found protobuf, version 3.17.3
--   Found grpc++, version 1.41.0
-- Looking for spawn.h
-- Looking for spawn.h - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Looking for dlfcn.h
-- Looking for dlfcn.h - found
-- Looking for errno.h
-- Looking for errno.h - found
-- Looking for sys/utsname.h
-- Looking for sys/utsname.h - found
-- Looking for sys/wait.h
-- Looking for sys/wait.h - found
-- Looking for sys/time.h
-- Looking for sys/time.h - found
-- Looking for gnu/lib-names.h
-- Looking for gnu/lib-names.h - found
-- Looking for _NSGetEnviron
-- Looking for _NSGetEnviron - not found
-- Looking for dlopen
-- Looking for dlopen - found
-- Looking for dlsym
-- Looking for dlsym - found
-- Looking for dlerror
-- Looking for dlerror - found
-- Looking for dlclose
-- Looking for dlclose - found
-- Looking for RTLD_NEXT
-- Looking for RTLD_NEXT - found
-- Looking for EACCES
-- Looking for EACCES - found
-- Looking for ENOENT
-- Looking for ENOENT - found
-- Looking for strerror_r
-- Looking for strerror_r - found
-- Looking for environ
-- Looking for environ - found
-- Looking for uname
-- Looking for uname - found
-- Looking for confstr
-- Looking for confstr - found
-- Looking for _CS_PATH
-- Looking for _CS_PATH - found
-- Looking for _CS_GNU_LIBC_VERSION
-- Looking for _CS_GNU_LIBC_VERSION - found
-- Looking for _CS_GNU_LIBPTHREAD_VERSION
-- Looking for _CS_GNU_LIBPTHREAD_VERSION - found
-- Looking for protoc ... /usr/bin/protoc
-- Looking for grpc_cpp_plugin ... /usr/bin/grpc_cpp_plugin
-- Configuring done
-- Generating done
-- Build files have been written to: /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Build/BearSource
[6/8] cd /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Build/BearSource && /usr/bin/cmake --build . && /usr/bin/cmake -E touch /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Stamp/BearSource/BearSource-build
FAILED: subprojects/Stamp/BearSource/BearSource-build /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Stamp/BearSource/BearSource-build
cd /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Build/BearSource && /usr/bin/cmake --build . && /usr/bin/cmake -E touch /var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Stamp/BearSource/BearSource-build
[1/61] Building CXX object intercept/CMakeFiles/exec.dir/source/report/libexec/std.cc.o
[2/61] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Environment.cc.o
[3/61] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Buffer.cc.o
[4/61] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Logger.cc.o
[5/61] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Session.cc.o
[6/61] Generating supervise.pb.h, supervise.grpc.pb.h, supervise.pb.cc, supervise.grpc.pb.cc
[7/61] Generating intercept.pb.h, intercept.grpc.pb.h, intercept.pb.cc, intercept.grpc.pb.cc
[8/61] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Errors.cc.o
[9/61] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Paths.cc.o
[10/61] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Linker.cc.o
[11/61] Building CXX object intercept/CMakeFiles/exec.dir/source/report/libexec/lib.cc.o
[12/61] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Resolver.cc.o
[13/61] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Executor.cc.o
[14/61] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Guard.cc.o
[15/61] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Path.cc.o
[16/61] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Os.cc.o
[17/61] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Signal.cc.o
[18/61] Building CXX object intercept/CMakeFiles/domain_a.dir/source/Domain.cc.o
[19/61] Building CXX object intercept/CMakeFiles/wrapper_a.dir/source/report/wrapper/EventFactory.cc.o
[20/61] Building CXX object intercept/CMakeFiles/events_db_a.dir/source/collect/db/EventsDatabaseWriter.cc.o
[21/61] Building CXX object libflags/CMakeFiles/flags_a.dir/source/Flags.cc.o
[22/61] Building CXX object intercept/CMakeFiles/domain_a.dir/source/Convert.cc.o
[23/61] Building CXX object intercept/CMakeFiles/events_db_a.dir/source/collect/db/EventsDatabaseReader.cc.o
[24/61] Building CXX object citnames/CMakeFiles/citnames_json_a.dir/source/Output.cc.o
FAILED: citnames/CMakeFiles/citnames_json_a.dir/source/Output.cc.o
/usr/bin/x86_64-pc-linux-gnu-g++ -DFMT_LOCALE -DFMT_SHARED -DJSON_DIAGNOSTICS=0 -DJSON_USE_IMPLICIT_CONVERSIONS=1 -DSPDLOG_COMPILED_LIB -DSPDLOG_FMT_EXTERNAL -DSPDLOG_SHARED_LIB -I/var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Build/BearSource -I/var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/libresult/include -I/var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/libshell/include -I/var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/libsys/include -march=native -ggdb -O2 -pipe -fno-exceptions -DSPDLOG_NO_EXCEPTIONS -DGOOGLE_PROTOBUF_NO_RTTI -Wall -Wextra -fexceptions -std=c++17 -MD -MT citnames/CMakeFiles/citnames_json_a.dir/source/Output.cc.o -MF citnames/CMakeFiles/citnames_json_a.dir/source/Output.cc.o.d -o citnames/CMakeFiles/citnames_json_a.dir/source/Output.cc.o -c /var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/citnames/source/Output.cc
In file included from /usr/include/nlohmann/detail/conversions/from_json.hpp:19,
                 from /usr/include/nlohmann/adl_serializer.hpp:6,
                 from /usr/include/nlohmann/json.hpp:51,
                 from /var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/citnames/source/Output.cc:30:
/usr/include/nlohmann/detail/meta/type_traits.hpp: In instantiation of ‘constexpr const bool nlohmann::detail::is_constructible_array_type_impl<nlohmann::basic_json<>, std::filesystem::__cxx11::path, void>::value’:
/usr/include/nlohmann/detail/conversions/from_json.hpp:245:84:   required by substitution of ‘template<class BasicJsonType, class ConstructibleArrayType, typename std::enable_if<((((nlohmann::detail::is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value && (! nlohmann::detail::is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value)) && (! nlohmann::detail::is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value)) && (! std::is_same<ConstructibleArrayType, typename BasicJsonType::binary_t>::value)) && (! nlohmann::detail::is_basic_json<T>::value)), int>::type <anonymous> > decltype (((nlohmann::detail::from_json_array_impl(j, arr, nlohmann::detail::priority_tag<3>{}), j.get<typename ConstructibleArrayType::value_type>()), void())) nlohmann::detail::from_json(const BasicJsonType&, ConstructibleArrayType&) [with BasicJsonType = nlohmann::basic_json<>; ConstructibleArrayType = std::filesystem::__cxx11::path; typename std::enable_if<((((nlohmann::detail::is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value && (! nlohmann::detail::is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value)) && (! nlohmann::detail::is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value)) && (! std::is_same<ConstructibleArrayType, typename BasicJsonType::binary_t>::value)) && (! nlohmann::detail::is_basic_json<T>::value)), int>::type <anonymous> = <missing>]’
/usr/include/nlohmann/detail/conversions/from_json.hpp:452:26:   required by substitution of ‘template<class BasicJsonType, class T> decltype (nlohmann::detail::from_json(j, forward<T>(val))) nlohmann::detail::from_json_fn::operator()(const BasicJsonType&, T&&) const [with BasicJsonType = nlohmann::basic_json<>; T = std::filesystem::__cxx11::path&]’
/usr/include/nlohmann/adl_serializer.hpp:31:38:   required by substitution of ‘template<class BasicJsonType, class TargetType> static decltype ((nlohmann::{anonymous}::from_json(forward<BasicJsonType>(j), val), void())) nlohmann::adl_serializer<std::filesystem::__cxx11::path, void>::from_json<BasicJsonType, TargetType>(BasicJsonType&&, TargetType&) [with BasicJsonType = const nlohmann::basic_json<>&; TargetType = std::filesystem::__cxx11::path]’
/usr/include/nlohmann/detail/meta/detected.hpp:55:7:   recursively required by substitution of ‘template<class Default, template<class ...> class Op, class ... Args> struct nlohmann::detail::detector<Default, typename nlohmann::detail::make_void<Op<Args ...> >::type, Op, Args ...> [with Default = nlohmann::detail::nonesuch; Op = nlohmann::detail::from_json_function; Args = {nlohmann::adl_serializer<std::filesystem::__cxx11::path, void>, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long int, long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&, std::filesystem::__cxx11::path&}]’
/usr/include/nlohmann/detail/meta/detected.hpp:55:7:   required by substitution of ‘template<class Expected, template<class ...> class Op, class ... Args> using is_detected_exact = std::is_same<Expected, typename nlohmann::detail::detector<nlohmann::detail::nonesuch, void, Op, Args ...>::type> [with Expected = void; Op = nlohmann::detail::from_json_function; Args = {nlohmann::adl_serializer<std::filesystem::__cxx11::path, void>, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long int, long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&, std::filesystem::__cxx11::path&}]’
/usr/include/nlohmann/detail/meta/type_traits.hpp:115:36:   required from ‘constexpr const bool nlohmann::detail::has_from_json<nlohmann::basic_json<>, std::filesystem::__cxx11::path, void>::value’
/usr/include/nlohmann/json.hpp:3289:60:   required by substitution of ‘template<class ValueType, typename std::enable_if<((! nlohmann::detail::is_basic_json<BasicJsonType>::value) && nlohmann::detail::has_from_json<nlohmann::basic_json<>, ValueType, void>::value), int>::type <anonymous> > ValueType& nlohmann::basic_json<>::get_to<ValueType, <anonymous> >(ValueType&) const [with ValueType = std::filesystem::__cxx11::path; typename std::enable_if<((! nlohmann::detail::is_basic_json<BasicJsonType>::value) && nlohmann::detail::has_from_json<nlohmann::basic_json<>, ValueType, void>::value), int>::type <anonymous> = <missing>]’
/var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/citnames/source/Output.cc:164:28:   required from here
/usr/include/nlohmann/detail/meta/type_traits.hpp:400:22: error: the value of ‘nlohmann::detail::has_from_json<nlohmann::basic_json<>, std::filesystem::__cxx11::path, void>::value’ is not usable in a constant expression
  400 |         value_type>::value ||
      |                      ^~~~~
In file included from /usr/include/nlohmann/detail/conversions/from_json.hpp:19,
                 from /usr/include/nlohmann/adl_serializer.hpp:6,
                 from /usr/include/nlohmann/json.hpp:51,
                 from /var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/citnames/source/Output.cc:30:
/usr/include/nlohmann/detail/meta/type_traits.hpp:113:27: note: ‘nlohmann::detail::has_from_json<nlohmann::basic_json<>, std::filesystem::__cxx11::path, void>::value’ used in its own initializer
  113 |     static constexpr bool value =
      |                           ^~~~~
[25/61] Building CXX object citnames/CMakeFiles/citnames_json_a.dir/source/Configuration.cc.o
FAILED: citnames/CMakeFiles/citnames_json_a.dir/source/Configuration.cc.o
/usr/bin/x86_64-pc-linux-gnu-g++ -DFMT_LOCALE -DFMT_SHARED -DJSON_DIAGNOSTICS=0 -DJSON_USE_IMPLICIT_CONVERSIONS=1 -DSPDLOG_COMPILED_LIB -DSPDLOG_FMT_EXTERNAL -DSPDLOG_SHARED_LIB -I/var/tmp/portage/dev-util/bear-3.0.16/work/bear-3.0.16_build/subprojects/Build/BearSource -I/var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/libresult/include -I/var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/libshell/include -I/var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/libsys/include -march=native -ggdb -O2 -pipe -fno-exceptions -DSPDLOG_NO_EXCEPTIONS -DGOOGLE_PROTOBUF_NO_RTTI -Wall -Wextra -fexceptions -std=c++17 -MD -MT citnames/CMakeFiles/citnames_json_a.dir/source/Configuration.cc.o -MF citnames/CMakeFiles/citnames_json_a.dir/source/Configuration.cc.o.d -o citnames/CMakeFiles/citnames_json_a.dir/source/Configuration.cc.o -c /var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/citnames/source/Configuration.cc
In file included from /usr/include/nlohmann/detail/conversions/from_json.hpp:19,
                 from /usr/include/nlohmann/adl_serializer.hpp:6,
                 from /usr/include/nlohmann/json.hpp:51,
                 from /var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/citnames/source/Configuration.cc:26:
/usr/include/nlohmann/detail/meta/type_traits.hpp: In instantiation of ‘constexpr const bool nlohmann::detail::is_constructible_array_type_impl<nlohmann::basic_json<>, std::filesystem::__cxx11::path, void>::value’:
/usr/include/nlohmann/detail/conversions/from_json.hpp:245:84:   required by substitution of ‘template<class BasicJsonType, class ConstructibleArrayType, typename std::enable_if<((((nlohmann::detail::is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value && (! nlohmann::detail::is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value)) && (! nlohmann::detail::is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value)) && (! std::is_same<ConstructibleArrayType, typename BasicJsonType::binary_t>::value)) && (! nlohmann::detail::is_basic_json<T>::value)), int>::type <anonymous> > decltype (((nlohmann::detail::from_json_array_impl(j, arr, nlohmann::detail::priority_tag<3>{}), j.get<typename ConstructibleArrayType::value_type>()), void())) nlohmann::detail::from_json(const BasicJsonType&, ConstructibleArrayType&) [with BasicJsonType = nlohmann::basic_json<>; ConstructibleArrayType = std::filesystem::__cxx11::path; typename std::enable_if<((((nlohmann::detail::is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value && (! nlohmann::detail::is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value)) && (! nlohmann::detail::is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value)) && (! std::is_same<ConstructibleArrayType, typename BasicJsonType::binary_t>::value)) && (! nlohmann::detail::is_basic_json<T>::value)), int>::type <anonymous> = <missing>]’
/usr/include/nlohmann/detail/conversions/from_json.hpp:452:26:   required by substitution of ‘template<class BasicJsonType, class T> decltype (nlohmann::detail::from_json(j, forward<T>(val))) nlohmann::detail::from_json_fn::operator()(const BasicJsonType&, T&&) const [with BasicJsonType = nlohmann::basic_json<>; T = std::filesystem::__cxx11::path&]’
/usr/include/nlohmann/adl_serializer.hpp:31:38:   required by substitution of ‘template<class BasicJsonType, class TargetType> static decltype ((nlohmann::{anonymous}::from_json(forward<BasicJsonType>(j), val), void())) nlohmann::adl_serializer<std::filesystem::__cxx11::path, void>::from_json<BasicJsonType, TargetType>(BasicJsonType&&, TargetType&) [with BasicJsonType = const nlohmann::basic_json<>&; TargetType = std::filesystem::__cxx11::path]’
/usr/include/nlohmann/detail/meta/type_traits.hpp:89:49:   required by substitution of ‘template<class T, class ... Args> using from_json_function = decltype (T::from_json((declval<Args>)()...)) [with T = nlohmann::adl_serializer<std::filesystem::__cxx11::path, void>; Args = {const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long int, long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&, std::filesystem::__cxx11::path&}]’
/usr/include/nlohmann/detail/meta/detected.hpp:55:7:   [ skipping 4 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/nlohmann/detail/conversions/from_json.hpp:452:26:   required by substitution of ‘template<class BasicJsonType, class T> decltype (nlohmann::detail::from_json(j, forward<T>(val))) nlohmann::detail::from_json_fn::operator()(const BasicJsonType&, T&&) const [with BasicJsonType = nlohmann::basic_json<>; T = std::__cxx11::list<std::filesystem::__cxx11::path>&]’
/usr/include/nlohmann/adl_serializer.hpp:31:38:   required by substitution of ‘template<class BasicJsonType, class TargetType> static decltype ((nlohmann::{anonymous}::from_json(forward<BasicJsonType>(j), val), void())) nlohmann::adl_serializer<std::__cxx11::list<std::filesystem::__cxx11::path>, void>::from_json<BasicJsonType, TargetType>(BasicJsonType&&, TargetType&) [with BasicJsonType = const nlohmann::basic_json<>&; TargetType = std::__cxx11::list<std::filesystem::__cxx11::path>]’
/usr/include/nlohmann/detail/meta/detected.hpp:55:7:   recursively required by substitution of ‘template<class Default, template<class ...> class Op, class ... Args> struct nlohmann::detail::detector<Default, typename nlohmann::detail::make_void<Op<Args ...> >::type, Op, Args ...> [with Default = nlohmann::detail::nonesuch; Op = nlohmann::detail::from_json_function; Args = {nlohmann::adl_serializer<std::__cxx11::list<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >, void>, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long int, long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&, std::__cxx11::list<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >&}]’
/usr/include/nlohmann/detail/meta/detected.hpp:55:7:   required by substitution of ‘template<class Expected, template<class ...> class Op, class ... Args> using is_detected_exact = std::is_same<Expected, typename nlohmann::detail::detector<nlohmann::detail::nonesuch, void, Op, Args ...>::type> [with Expected = void; Op = nlohmann::detail::from_json_function; Args = {nlohmann::adl_serializer<std::__cxx11::list<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >, void>, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long int, long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&, std::__cxx11::list<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >&}]’
/usr/include/nlohmann/detail/meta/type_traits.hpp:115:36:   required from ‘constexpr const bool nlohmann::detail::has_from_json<nlohmann::basic_json<>, std::__cxx11::list<std::filesystem::__cxx11::path>, void>::value’
/usr/include/nlohmann/json.hpp:3289:60:   required by substitution of ‘template<class ValueType, typename std::enable_if<((! nlohmann::detail::is_basic_json<BasicJsonType>::value) && nlohmann::detail::has_from_json<nlohmann::basic_json<>, ValueType, void>::value), int>::type <anonymous> > ValueType& nlohmann::basic_json<>::get_to<ValueType, <anonymous> >(ValueType&) const [with ValueType = std::__cxx11::list<std::filesystem::__cxx11::path>; typename std::enable_if<((! nlohmann::detail::is_basic_json<BasicJsonType>::value) && nlohmann::detail::has_from_json<nlohmann::basic_json<>, ValueType, void>::value), int>::type <anonymous> = <missing>]’
/var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/citnames/source/Configuration.cc:46:44:   required from here
/usr/include/nlohmann/detail/meta/type_traits.hpp:400:22: error: the value of ‘nlohmann::detail::has_from_json<nlohmann::basic_json<>, std::filesystem::__cxx11::path, void>::value’ is not usable in a constant expression
  400 |         value_type>::value ||
      |                      ^~~~~
In file included from /usr/include/nlohmann/detail/conversions/from_json.hpp:19,
                 from /usr/include/nlohmann/adl_serializer.hpp:6,
                 from /usr/include/nlohmann/json.hpp:51,
                 from /var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/citnames/source/Configuration.cc:26:
/usr/include/nlohmann/detail/meta/type_traits.hpp:113:27: note: ‘nlohmann::detail::has_from_json<nlohmann::basic_json<>, std::filesystem::__cxx11::path, void>::value’ used in its own initializer
  113 |     static constexpr bool value =
      |                           ^~~~~
In file included from /usr/include/nlohmann/detail/conversions/from_json.hpp:19,
                 from /usr/include/nlohmann/adl_serializer.hpp:6,
                 from /usr/include/nlohmann/json.hpp:51,
                 from /var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/citnames/source/Configuration.cc:26:
/usr/include/nlohmann/detail/meta/type_traits.hpp: In instantiation of ‘constexpr const bool nlohmann::detail::is_compatible_array_type_impl<nlohmann::basic_json<>, std::filesystem::__cxx11::path, void>::value’:
/usr/include/nlohmann/detail/conversions/to_json.hpp:310:48:   required by substitution of ‘template<class BasicJsonType, class CompatibleArrayType, typename std::enable_if<((((nlohmann::detail::is_compatible_array_type<BasicJsonType, CompatibleArrayType>::value && (! nlohmann::detail::is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value)) && (! nlohmann::detail::is_compatible_string_type<BasicJsonType, ConstructibleStringType>::value)) && (! std::is_same<typename BasicJsonType::binary_t, CompatibleArrayType>::value)) && (! nlohmann::detail::is_basic_json<T>::value)), int>::type <anonymous> > void nlohmann::detail::to_json(BasicJsonType&, const CompatibleArrayType&) [with BasicJsonType = nlohmann::basic_json<>; CompatibleArrayType = std::filesystem::__cxx11::path; typename std::enable_if<((((nlohmann::detail::is_compatible_array_type<BasicJsonType, CompatibleArrayType>::value && (! nlohmann::detail::is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value)) && (! nlohmann::detail::is_compatible_string_type<BasicJsonType, ConstructibleStringType>::value)) && (! std::is_same<typename BasicJsonType::binary_t, CompatibleArrayType>::value)) && (! nlohmann::detail::is_basic_json<T>::value)), int>::type <anonymous> = <missing>]’
/usr/include/nlohmann/detail/conversions/to_json.hpp:393:24:   required by substitution of ‘template<class BasicJsonType, class T> decltype ((nlohmann::detail::to_json(j, forward<T>(val)), void())) nlohmann::detail::to_json_fn::operator()(BasicJsonType&, T&&) const [with BasicJsonType = nlohmann::basic_json<>; T = std::filesystem::__cxx11::path]’
/usr/include/nlohmann/adl_serializer.hpp:68:36:   required by substitution of ‘template<class BasicJsonType, class TargetType> static decltype ((nlohmann::{anonymous}::to_json(j, forward<TargetType>(val)), void())) nlohmann::adl_serializer<std::filesystem::__cxx11::path, void>::to_json<BasicJsonType, TargetType>(BasicJsonType&, TargetType&&) [with BasicJsonType = nlohmann::basic_json<>; TargetType = std::filesystem::__cxx11::path]’
/usr/include/nlohmann/detail/meta/type_traits.hpp:86:45:   required by substitution of ‘template<class T, class ... Args> using to_json_function = decltype (T::to_json((declval<Args>)()...)) [with T = nlohmann::adl_serializer<std::filesystem::__cxx11::path, void>; Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long int, long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&, std::filesystem::__cxx11::path}]’
/usr/include/nlohmann/detail/meta/detected.hpp:55:7:   [ skipping 10 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/nlohmann/adl_serializer.hpp:68:36:   required by substitution of ‘template<class BasicJsonType, class TargetType> static decltype ((nlohmann::{anonymous}::to_json(j, forward<TargetType>(val)), void())) nlohmann::adl_serializer<std::__cxx11::list<std::filesystem::__cxx11::path>, void>::to_json<BasicJsonType, TargetType>(BasicJsonType&, TargetType&&) [with BasicJsonType = nlohmann::basic_json<>; TargetType = std::__cxx11::list<std::filesystem::__cxx11::path>]’
/usr/include/nlohmann/detail/meta/detected.hpp:55:7:   recursively required by substitution of ‘template<class Default, template<class ...> class Op, class ... Args> struct nlohmann::detail::detector<Default, typename nlohmann::detail::make_void<Op<Args ...> >::type, Op, Args ...> [with Default = nlohmann::detail::nonesuch; Op = nlohmann::detail::to_json_function; Args = {nlohmann::adl_serializer<std::__cxx11::list<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >, void>, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long int, long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&, std::__cxx11::list<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >}]’
/usr/include/nlohmann/detail/meta/detected.hpp:55:7:   required by substitution of ‘template<class Expected, template<class ...> class Op, class ... Args> using is_detected_exact = std::is_same<Expected, typename nlohmann::detail::detector<nlohmann::detail::nonesuch, void, Op, Args ...>::type> [with Expected = void; Op = nlohmann::detail::to_json_function; Args = {nlohmann::adl_serializer<std::__cxx11::list<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >, void>, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long int, long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&, std::__cxx11::list<std::filesystem::__cxx11::path, std::allocator<std::filesystem::__cxx11::path> >}]’
/usr/include/nlohmann/detail/meta/type_traits.hpp:145:13:   required from ‘constexpr const bool nlohmann::detail::has_to_json<nlohmann::basic_json<>, std::__cxx11::list<std::filesystem::__cxx11::path>, void>::value’
/usr/include/nlohmann/detail/meta/type_traits.hpp:446:53:   required from ‘constexpr const bool nlohmann::detail::is_compatible_type_impl<nlohmann::basic_json<>, std::__cxx11::list<std::filesystem::__cxx11::path>, void>::value’
/usr/include/nlohmann/json.hpp:1569:53:   required by substitution of ‘template<class CompatibleType, class U, typename std::enable_if<((! nlohmann::detail::is_basic_json<T>::value) && nlohmann::detail::is_compatible_type<nlohmann::basic_json<>, U>::value), int>::type <anonymous> > nlohmann::basic_json<>::basic_json(CompatibleType&&) [with CompatibleType = const std::__cxx11::list<std::filesystem::__cxx11::path>&; U = std::__cxx11::list<std::filesystem::__cxx11::path>; typename std::enable_if<((! nlohmann::detail::is_basic_json<T>::value) && nlohmann::detail::is_compatible_type<nlohmann::basic_json<>, U>::value), int>::type <anonymous> = <missing>]’
/var/tmp/portage/dev-util/bear-3.0.16/work/Bear-3.0.16/source/citnames/source/Configuration.cc:58:41:   required from here
/usr/include/nlohmann/detail/meta/type_traits.hpp:362:46: error: incomplete type ‘nlohmann::detail::is_constructible<nlohmann::basic_json<>, std::filesystem::__cxx11::path>’ used in nested name specifier
  362 |         range_value_t<CompatibleArrayType>>::value;
      |                                              ^~~~~
[26/61] Building CXX object intercept/CMakeFiles/wrapper_a.dir/source/report/wrapper/EventReporter.cc.o
[27/61] Building CXX object libmain/CMakeFiles/main_a.dir/source/ApplicationLogConfig.cc.o
[28/61] Building CXX object libmain/CMakeFiles/main_a.dir/source/ApplicationFromArgs.cc.o
[29/61] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Process.cc.o
[30/61] Building CXX object intercept/CMakeFiles/intercept_a.dir/source/collect/RpcServices.cc.o
[31/61] Building CXX object intercept/CMakeFiles/intercept.dir/source/collect/main.cc.o
[32/61] Building CXX object intercept/proto/CMakeFiles/rpc_a.dir/intercept.grpc.pb.cc.o
[33/61] Building CXX object libshell/CMakeFiles/shell_a.dir/source/Command.cc.o
[34/61] Building CXX object intercept/CMakeFiles/wrapper.dir/source/report/wrapper/main.cc.o
[35/61] Building CXX object intercept/CMakeFiles/wrapper_a.dir/source/report/wrapper/RpcClients.cc.o
[36/61] Building CXX object intercept/CMakeFiles/intercept_a.dir/source/collect/Reporter.cc.o
[37/61] Building CXX object intercept/CMakeFiles/intercept_a.dir/source/collect/Session.cc.o
[38/61] Building CXX object intercept/CMakeFiles/intercept_a.dir/source/collect/SessionLibrary.cc.o
[39/61] Building CXX object intercept/CMakeFiles/wrapper_a.dir/source/report/wrapper/Application.cc.o
[40/61] Building CXX object intercept/CMakeFiles/intercept_a.dir/source/collect/SessionWrapper.cc.o
[41/61] Building CXX object intercept/CMakeFiles/intercept_a.dir/source/collect/Application.cc.o
ninja: build stopped: subcommand failed.
ninja: build stopped: subcommand failed.
```

Version 3.10.3 breaks backward-compatibility with 3.10.2
diff --git a/include/nlohmann/detail/conversions/from_json.hpp b/include/nlohmann/detail/conversions/from_json.hpp
index c7bd018e34..71e32aaf71 100644
--- a/include/nlohmann/detail/conversions/from_json.hpp
+++ b/include/nlohmann/detail/conversions/from_json.hpp
@@ -19,6 +19,10 @@
 #include <nlohmann/detail/meta/type_traits.hpp>
 #include <nlohmann/detail/value_t.hpp>
 
+#ifdef JSON_HAS_CPP_17
+    #include <filesystem>
+#endif
+
 namespace nlohmann
 {
 namespace detail
@@ -169,7 +173,7 @@ void from_json(const BasicJsonType& j, std::valarray<T>& l)
 }
 
 template<typename BasicJsonType, typename T, std::size_t N>
-auto from_json(const BasicJsonType& j, T (&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
+auto from_json(const BasicJsonType& j, T (&arr)[N])  // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
 -> decltype(j.template get<T>(), void())
 {
     for (std::size_t i = 0; i < N; ++i)
@@ -444,6 +448,18 @@ void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyE
     }
 }
 
+#ifdef JSON_HAS_CPP_17
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, std::filesystem::path& p)
+{
+    if (JSON_HEDLEY_UNLIKELY(!j.is_string()))
+    {
+        JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()), j));
+    }
+    p = *j.template get_ptr<const typename BasicJsonType::string_t*>();
+}
+#endif
+
 struct from_json_fn
 {
     template<typename BasicJsonType, typename T>
diff --git a/include/nlohmann/detail/conversions/to_json.hpp b/include/nlohmann/detail/conversions/to_json.hpp
index 06323a2729..79fdb3233f 100644
--- a/include/nlohmann/detail/conversions/to_json.hpp
+++ b/include/nlohmann/detail/conversions/to_json.hpp
@@ -9,11 +9,16 @@
 #include <valarray> // valarray
 #include <vector> // vector
 
+#include <nlohmann/detail/macro_scope.hpp>
 #include <nlohmann/detail/iterators/iteration_proxy.hpp>
 #include <nlohmann/detail/meta/cpp_future.hpp>
 #include <nlohmann/detail/meta/type_traits.hpp>
 #include <nlohmann/detail/value_t.hpp>
 
+#ifdef JSON_HAS_CPP_17
+    #include <filesystem>
+#endif
+
 namespace nlohmann
 {
 namespace detail
@@ -386,6 +391,14 @@ void to_json(BasicJsonType& j, const T& t)
     to_json_tuple_impl(j, t, make_index_sequence<std::tuple_size<T>::value> {});
 }
 
+#ifdef JSON_HAS_CPP_17
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, const std::filesystem::path& p)
+{
+    j = p.string();
+}
+#endif
+
 struct to_json_fn
 {
     template<typename BasicJsonType, typename T>
diff --git a/include/nlohmann/detail/meta/type_traits.hpp b/include/nlohmann/detail/meta/type_traits.hpp
index ca6051e7cd..984ca19319 100644
--- a/include/nlohmann/detail/meta/type_traits.hpp
+++ b/include/nlohmann/detail/meta/type_traits.hpp
@@ -309,44 +309,21 @@ struct is_constructible_object_type
     : is_constructible_object_type_impl<BasicJsonType,
       ConstructibleObjectType> {};
 
-template<typename BasicJsonType, typename CompatibleStringType,
-         typename = void>
-struct is_compatible_string_type_impl : std::false_type {};
-
 template<typename BasicJsonType, typename CompatibleStringType>
-struct is_compatible_string_type_impl <
-    BasicJsonType, CompatibleStringType,
-    enable_if_t<is_detected_convertible<typename BasicJsonType::string_t::value_type,
-    range_value_t,
-    CompatibleStringType>::value >>
+struct is_compatible_string_type
 {
     static constexpr auto value =
         is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value;
 };
 
 template<typename BasicJsonType, typename ConstructibleStringType>
-struct is_compatible_string_type
-    : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
-
-template<typename BasicJsonType, typename ConstructibleStringType,
-         typename = void>
-struct is_constructible_string_type_impl : std::false_type {};
-
-template<typename BasicJsonType, typename ConstructibleStringType>
-struct is_constructible_string_type_impl <
-    BasicJsonType, ConstructibleStringType,
-    enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
-    value_type_t, ConstructibleStringType>::value >>
+struct is_constructible_string_type
 {
     static constexpr auto value =
         is_constructible<ConstructibleStringType,
         typename BasicJsonType::string_t>::value;
 };
 
-template<typename BasicJsonType, typename ConstructibleStringType>
-struct is_constructible_string_type
-    : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
-
 template<typename BasicJsonType, typename CompatibleArrayType, typename = void>
 struct is_compatible_array_type_impl : std::false_type {};
 
@@ -355,7 +332,10 @@ struct is_compatible_array_type_impl <
     BasicJsonType, CompatibleArrayType,
     enable_if_t <
     is_detected<iterator_t, CompatibleArrayType>::value&&
-    is_iterator_traits<iterator_traits<detected_t<iterator_t, CompatibleArrayType>>>::value >>
+    is_iterator_traits<iterator_traits<detected_t<iterator_t, CompatibleArrayType>>>::value&&
+// special case for types like std::filesystem::path whose iterator's value_type are themselves
+// c.f. https://github.com/nlohmann/json/pull/3073
+    !std::is_same<CompatibleArrayType, detected_t<range_value_t, CompatibleArrayType>>::value >>
 {
     static constexpr bool value =
         is_constructible<BasicJsonType,
@@ -388,8 +368,11 @@ struct is_constructible_array_type_impl <
 is_detected<iterator_t, ConstructibleArrayType>::value&&
 is_iterator_traits<iterator_traits<detected_t<iterator_t, ConstructibleArrayType>>>::value&&
 is_detected<range_value_t, ConstructibleArrayType>::value&&
-is_complete_type <
-detected_t<range_value_t, ConstructibleArrayType >>::value >>
+// special case for types like std::filesystem::path whose iterator's value_type are themselves
+// c.f. https://github.com/nlohmann/json/pull/3073
+!std::is_same<ConstructibleArrayType, detected_t<range_value_t, ConstructibleArrayType>>::value&&
+        is_complete_type <
+        detected_t<range_value_t, ConstructibleArrayType >>::value >>
 {
     using value_type = range_value_t<ConstructibleArrayType>;
 
diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp
index 25c6983b04..3f68f33f70 100644
--- a/single_include/nlohmann/json.hpp
+++ b/single_include/nlohmann/json.hpp
@@ -3783,44 +3783,21 @@ struct is_constructible_object_type
     : is_constructible_object_type_impl<BasicJsonType,
       ConstructibleObjectType> {};
 
-template<typename BasicJsonType, typename CompatibleStringType,
-         typename = void>
-struct is_compatible_string_type_impl : std::false_type {};
-
 template<typename BasicJsonType, typename CompatibleStringType>
-struct is_compatible_string_type_impl <
-    BasicJsonType, CompatibleStringType,
-    enable_if_t<is_detected_convertible<typename BasicJsonType::string_t::value_type,
-    range_value_t,
-    CompatibleStringType>::value >>
+struct is_compatible_string_type
 {
     static constexpr auto value =
         is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value;
 };
 
 template<typename BasicJsonType, typename ConstructibleStringType>
-struct is_compatible_string_type
-    : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
-
-template<typename BasicJsonType, typename ConstructibleStringType,
-         typename = void>
-struct is_constructible_string_type_impl : std::false_type {};
-
-template<typename BasicJsonType, typename ConstructibleStringType>
-struct is_constructible_string_type_impl <
-    BasicJsonType, ConstructibleStringType,
-    enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
-    value_type_t, ConstructibleStringType>::value >>
+struct is_constructible_string_type
 {
     static constexpr auto value =
         is_constructible<ConstructibleStringType,
         typename BasicJsonType::string_t>::value;
 };
 
-template<typename BasicJsonType, typename ConstructibleStringType>
-struct is_constructible_string_type
-    : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
-
 template<typename BasicJsonType, typename CompatibleArrayType, typename = void>
 struct is_compatible_array_type_impl : std::false_type {};
 
@@ -3829,7 +3806,10 @@ struct is_compatible_array_type_impl <
     BasicJsonType, CompatibleArrayType,
     enable_if_t <
     is_detected<iterator_t, CompatibleArrayType>::value&&
-    is_iterator_traits<iterator_traits<detected_t<iterator_t, CompatibleArrayType>>>::value >>
+    is_iterator_traits<iterator_traits<detected_t<iterator_t, CompatibleArrayType>>>::value&&
+// special case for types like std::filesystem::path whose iterator's value_type are themselves
+// c.f. https://github.com/nlohmann/json/pull/3073
+    !std::is_same<CompatibleArrayType, detected_t<range_value_t, CompatibleArrayType>>::value >>
 {
     static constexpr bool value =
         is_constructible<BasicJsonType,
@@ -3862,8 +3842,11 @@ struct is_constructible_array_type_impl <
 is_detected<iterator_t, ConstructibleArrayType>::value&&
 is_iterator_traits<iterator_traits<detected_t<iterator_t, ConstructibleArrayType>>>::value&&
 is_detected<range_value_t, ConstructibleArrayType>::value&&
-is_complete_type <
-detected_t<range_value_t, ConstructibleArrayType >>::value >>
+// special case for types like std::filesystem::path whose iterator's value_type are themselves
+// c.f. https://github.com/nlohmann/json/pull/3073
+!std::is_same<ConstructibleArrayType, detected_t<range_value_t, ConstructibleArrayType>>::value&&
+        is_complete_type <
+        detected_t<range_value_t, ConstructibleArrayType >>::value >>
 {
     using value_type = range_value_t<ConstructibleArrayType>;
 
@@ -3967,6 +3950,10 @@ T conditional_static_cast(U value)
 // #include <nlohmann/detail/value_t.hpp>
 
 
+#ifdef JSON_HAS_CPP_17
+    #include <filesystem>
+#endif
+
 namespace nlohmann
 {
 namespace detail
@@ -4117,7 +4104,7 @@ void from_json(const BasicJsonType& j, std::valarray<T>& l)
 }
 
 template<typename BasicJsonType, typename T, std::size_t N>
-auto from_json(const BasicJsonType& j, T (&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
+auto from_json(const BasicJsonType& j, T (&arr)[N])  // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
 -> decltype(j.template get<T>(), void())
 {
     for (std::size_t i = 0; i < N; ++i)
@@ -4392,6 +4379,18 @@ void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyE
     }
 }
 
+#ifdef JSON_HAS_CPP_17
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, std::filesystem::path& p)
+{
+    if (JSON_HEDLEY_UNLIKELY(!j.is_string()))
+    {
+        JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()), j));
+    }
+    p = *j.template get_ptr<const typename BasicJsonType::string_t*>();
+}
+#endif
+
 struct from_json_fn
 {
     template<typename BasicJsonType, typename T>
@@ -4425,6 +4424,8 @@ constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::va
 #include <valarray> // valarray
 #include <vector> // vector
 
+// #include <nlohmann/detail/macro_scope.hpp>
+
 // #include <nlohmann/detail/iterators/iteration_proxy.hpp>
 
 
@@ -4625,6 +4626,10 @@ class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >>
 // #include <nlohmann/detail/value_t.hpp>
 
 
+#ifdef JSON_HAS_CPP_17
+    #include <filesystem>
+#endif
+
 namespace nlohmann
 {
 namespace detail
@@ -4997,6 +5002,14 @@ void to_json(BasicJsonType& j, const T& t)
     to_json_tuple_impl(j, t, make_index_sequence<std::tuple_size<T>::value> {});
 }
 
+#ifdef JSON_HAS_CPP_17
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, const std::filesystem::path& p)
+{
+    j = p.string();
+}
+#endif
+
 struct to_json_fn
 {
     template<typename BasicJsonType, typename T>

diff --git a/test/src/unit-regression2.cpp b/test/src/unit-regression2.cpp
index cf74297825..b5a6ca0a46 100644
--- a/test/src/unit-regression2.cpp
+++ b/test/src/unit-regression2.cpp
@@ -37,16 +37,17 @@ SOFTWARE.
 using json = nlohmann::json;
 using ordered_json = nlohmann::ordered_json;
 
-#include <list>
 #include <cstdio>
+#include <list>
 #include <type_traits>
 #include <utility>
 
-#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464
+#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1)  // fix for issue #464
     #define JSON_HAS_CPP_17
 #endif
 
 #ifdef JSON_HAS_CPP_17
+    #include <filesystem>
     #include <variant>
 #endif
 
@@ -69,14 +70,19 @@ using float_json = nlohmann::basic_json<std::map, std::vector, std::string, bool
 /////////////////////////////////////////////////////////////////////
 namespace
 {
-struct NonDefaultFromJsonStruct { };
+struct NonDefaultFromJsonStruct
+{};
 
-inline bool operator== (NonDefaultFromJsonStruct const& /*unused*/, NonDefaultFromJsonStruct const& /*unused*/)
+inline bool operator==(NonDefaultFromJsonStruct const& /*unused*/, NonDefaultFromJsonStruct const& /*unused*/)
 {
     return true;
 }
 
-enum class for_1647 { one, two };
+enum class for_1647
+{
+    one,
+    two
+};
 
 // NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays): this is a false positive
 NLOHMANN_JSON_SERIALIZE_ENUM(for_1647,
@@ -84,7 +90,7 @@ NLOHMANN_JSON_SERIALIZE_ENUM(for_1647,
     {for_1647::one, "one"},
     {for_1647::two, "two"},
 })
-} // namespace
+}  // namespace
 
 /////////////////////////////////////////////////////////////////////
 // for #1299
@@ -93,9 +99,12 @@ NLOHMANN_JSON_SERIALIZE_ENUM(for_1647,
 struct Data
 {
     Data() = default;
-    Data(std::string a_, std::string b_) : a(std::move(a_)), b(std::move(b_)) {}
-    std::string a {};
-    std::string b {};
+    Data(std::string a_, std::string b_)
+        : a(std::move(a_))
+        , b(std::move(b_))
+    {}
+    std::string a{};
+    std::string b{};
 };
 
 void from_json(const json& j, Data& data);
@@ -118,15 +127,15 @@ bool operator==(Data const& lhs, Data const& rhs)
 
 namespace nlohmann
 {
-template <>
+template<>
 struct adl_serializer<NonDefaultFromJsonStruct>
 {
-    static NonDefaultFromJsonStruct from_json (json const& /*unused*/) noexcept
+    static NonDefaultFromJsonStruct from_json(json const& /*unused*/) noexcept
     {
         return {};
     }
 };
-} // namespace nlohmann
+}  // namespace nlohmann
 
 /////////////////////////////////////////////////////////////////////
 // for #1805
@@ -138,28 +147,29 @@ struct NotSerializableData
     float myfloat;
 };
 
-
 /////////////////////////////////////////////////////////////////////
 // for #2574
 /////////////////////////////////////////////////////////////////////
 
 struct NonDefaultConstructible
 {
-    explicit NonDefaultConstructible (int a) : x(a) { }
+    explicit NonDefaultConstructible(int a)
+        : x(a)
+    {}
     int x;
 };
 
 namespace nlohmann
 {
-template <>
+template<>
 struct adl_serializer<NonDefaultConstructible>
 {
-    static NonDefaultConstructible from_json (json const& j)
+    static NonDefaultConstructible from_json(json const& j)
     {
         return NonDefaultConstructible(j.get<int>());
     }
 };
-} // namespace nlohmann
+}  // namespace nlohmann
 
 /////////////////////////////////////////////////////////////////////
 // for #2824
@@ -168,11 +178,13 @@ struct adl_serializer<NonDefaultConstructible>
 class sax_no_exception : public nlohmann::detail::json_sax_dom_parser<json>
 {
   public:
-    explicit sax_no_exception(json& j) : nlohmann::detail::json_sax_dom_parser<json>(j, false) {}
+    explicit sax_no_exception(json& j)
+        : nlohmann::detail::json_sax_dom_parser<json>(j, false)
+    {}
 
     static bool parse_error(std::size_t /*position*/, const std::string& /*last_token*/, const json::exception& ex)
     {
-        error_string = new std::string(ex.what()); // NOLINT(cppcoreguidelines-owning-memory)
+        error_string = new std::string(ex.what());  // NOLINT(cppcoreguidelines-owning-memory)
         return false;
     }
 
@@ -296,22 +308,26 @@ TEST_CASE("regression tests 2")
         using it_type = decltype(p1.begin());
 
         std::set_difference(
-            p1.begin(), p1.end(),
-            p2.begin(), p2.end(),
-            std::inserter(diffs, diffs.end()), [&](const it_type & e1, const it_type & e2) -> bool
+            p1.begin(),
+            p1.end(),
+            p2.begin(),
+            p2.end(),
+            std::inserter(diffs, diffs.end()),
+            [&](const it_type & e1, const it_type & e2) -> bool
         {
-            using comper_pair = std::pair<std::string, decltype(e1.value())>; // Trying to avoid unneeded copy
-            return comper_pair(e1.key(), e1.value()) < comper_pair(e2.key(), e2.value()); // Using pair comper
+            using comper_pair = std::pair<std::string, decltype(e1.value())>;              // Trying to avoid unneeded copy
+            return comper_pair(e1.key(), e1.value()) < comper_pair(e2.key(), e2.value());  // Using pair comper
         });
 
-        CHECK(diffs.size() == 1); // Note the change here, was 2
+        CHECK(diffs.size() == 1);  // Note the change here, was 2
     }
 
 #ifdef JSON_HAS_CPP_17
     SECTION("issue #1292 - Serializing std::variant causes stack overflow")
     {
         static_assert(
-            !std::is_constructible<json, std::variant<int, float>>::value, "");
+            !std::is_constructible<json, std::variant<int, float>>::value,
+            "");
     }
 #endif
 
@@ -376,24 +392,7 @@ TEST_CASE("regression tests 2")
             nlohmann::json dump_test;
             const std::array<int, 108> data =
             {
-                {
-                    109,  108,  103,  125,  -122, -53,  115,
-                    18,   3,    0,    102,  19,   1,    15,
-                    -110, 13,   -3,   -1,   -81,  32,   2,
-                    0,    0,    0,    0,    0,    0,    0,
-                    8,    0,    0,    0,    0,    0,    0,
-                    0,    0,    0,    0,    0,    -80,  2,
-                    0,    0,    96,   -118, 46,   -116, 46,
-                    109,  -84,  -87,  108,  14,   109,  -24,
-                    -83,  13,   -18,  -51,  -83,  -52,  -115,
-                    14,   6,    32,   0,    0,    0,    0,
-                    0,    0,    0,    0,    0,    0,    0,
-                    64,   3,    0,    0,    0,    35,   -74,
-                    -73,  55,   57,   -128, 0,    0,    0,
-                    0,    0,    0,    0,    0,    0,    0,
-                    0,    0,    33,   0,    0,    0,    -96,
-                    -54,  -28,  -26
-                }
+                {109, 108, 103, 125, -122, -53, 115, 18, 3, 0, 102, 19, 1, 15, -110, 13, -3, -1, -81, 32, 2, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 2, 0, 0, 96, -118, 46, -116, 46, 109, -84, -87, 108, 14, 109, -24, -83, 13, -18, -51, -83, -52, -115, 14, 6, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 0, 0, 0, 35, -74, -73, 55, 57, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -96, -54, -28, -26}
             };
             std::string s;
             for (int i : data)
@@ -453,7 +452,7 @@ TEST_CASE("regression tests 2")
 
         SECTION("string array")
         {
-            const std::array<char, 2> input = {{ 'B', 0x00 }};
+            const std::array<char, 2> input = {{'B', 0x00}};
             json cbor = json::from_cbor(input, true, false);
             CHECK(cbor.is_discarded());
         }
@@ -491,12 +490,11 @@ TEST_CASE("regression tests 2")
         const std::array<unsigned char, 23> data = {{0x81, 0xA4, 0x64, 0x61, 0x74, 0x61, 0xC4, 0x0F, 0x33, 0x30, 0x30, 0x32, 0x33, 0x34, 0x30, 0x31, 0x30, 0x37, 0x30, 0x35, 0x30, 0x31, 0x30}};
         json j = json::from_msgpack(data.data(), data.size());
         CHECK_NOTHROW(
-            j.dump(4,                              // Indent
-                   ' ',                            // Indent char
-                   false,                          // Ensure ascii
+            j.dump(4,                             // Indent
+                   ' ',                           // Indent char
+                   false,                         // Ensure ascii
                    json::error_handler_t::strict  // Error
-                  )
-        );
+                  ));
     }
 
     SECTION("PR #2181 - regression bug with lvalue")
@@ -512,7 +510,16 @@ TEST_CASE("regression tests 2")
     {
         std::vector<uint8_t> data =
         {
-            0x7B, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x4F, 0x42
+            0x7B,
+            0x6F,
+            0x62,
+            0x6A,
+            0x65,
+            0x63,
+            0x74,
+            0x20,
+            0x4F,
+            0x42
         };
         json result = json::from_cbor(data, true, false);
         CHECK(result.is_discarded());
@@ -562,11 +569,10 @@ TEST_CASE("regression tests 2")
         SECTION("std::array")
         {
             {
-                json j = { 7, 4 };
+                json j = {7, 4};
                 auto arr = j.get<std::array<NonDefaultConstructible, 2>>();
                 CHECK(arr[0].x == 7);
                 CHECK(arr[1].x == 4);
-
             }
 
             {
@@ -578,21 +584,21 @@ TEST_CASE("regression tests 2")
         SECTION("std::pair")
         {
             {
-                json j = { 3, 8 };
+                json j = {3, 8};
                 auto p = j.get<std::pair<NonDefaultConstructible, NonDefaultConstructible>>();
                 CHECK(p.first.x == 3);
                 CHECK(p.second.x == 8);
             }
 
             {
-                json j = { 4, 1 };
+                json j = {4, 1};
                 auto p = j.get<std::pair<int, NonDefaultConstructible>>();
                 CHECK(p.first == 4);
                 CHECK(p.second.x == 1);
             }
 
             {
-                json j = { 6, 7 };
+                json j = {6, 7};
                 auto p = j.get<std::pair<NonDefaultConstructible, int>>();
                 CHECK(p.first.x == 6);
                 CHECK(p.second == 7);
@@ -607,16 +613,16 @@ TEST_CASE("regression tests 2")
         SECTION("std::tuple")
         {
             {
-                json j = { 9 };
+                json j = {9};
                 auto t = j.get<std::tuple<NonDefaultConstructible>>();
                 CHECK(std::get<0>(t).x == 9);
             }
 
             {
-                json j = { 9, 8, 7 };
+                json j = {9, 8, 7};
                 auto t = j.get<std::tuple<NonDefaultConstructible, int, NonDefaultConstructible>>();
                 CHECK(std::get<0>(t).x == 9);
-                CHECK(std::get<1>(t)   == 8);
+                CHECK(std::get<1>(t) == 8);
                 CHECK(std::get<2>(t).x == 7);
             }
 
@@ -658,9 +664,9 @@ TEST_CASE("regression tests 2")
         json j;
         sax_no_exception sax(j);
 
-        CHECK (!json::sax_parse("xyz", &sax));
+        CHECK(!json::sax_parse("xyz", &sax));
         CHECK(*sax_no_exception::error_string == "[json.exception.parse_error.101] parse error at line 1, column 1: syntax error while parsing value - invalid literal; last read: 'x'");
-        delete sax_no_exception::error_string; // NOLINT(cppcoreguidelines-owning-memory)
+        delete sax_no_exception::error_string;  // NOLINT(cppcoreguidelines-owning-memory)
     }
 
     SECTION("issue #2825 - Properly constrain the basic_json conversion operator")
@@ -695,6 +701,17 @@ TEST_CASE("regression tests 2")
         json k = json::from_cbor(my_vector);
         CHECK(j == k);
     }
+
+#ifdef JSON_HAS_CPP_17
+    SECTION("issue #3070 - Version 3.10.3 breaks backward-compatibility with 3.10.2 ")
+    {
+        std::filesystem::path text_path("/tmp/text.txt");
+        json j(text_path);
+
+        const auto j_path = j.get<std::filesystem::path>();
+        CHECK(j_path == text_path);
+    }
+#endif
 }
 
 DOCTEST_CLANG_SUPPRESS_WARNING_POP

{"test-unicode4": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-convenience": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-reference_access": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-wstring": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_import_build": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-ubjson": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-bson": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-ordered_json": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-element_access2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_import_minver_build": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-unicode2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-cbor": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_add_subdirectory_configure": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-class_lexer": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-class_iterator": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-hash": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-iterators2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_fetch_content_configure": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-element_access1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-merge_patch": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-serialization": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-assert_macro": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-disabled_exceptions": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-diagnostics": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-pointer_access": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-alt-string": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-algorithms": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-class_parser": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-deserialization": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-noexcept": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-large_json": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-testsuites": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-regression2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_fetch_content_build": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-to_chars": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "download_test_data": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_target_include_directories_configure": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-allocator": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-unicode3": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_import_minver_configure": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-ordered_map": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-capacity": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-user_defined_input": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-udt": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-concepts": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-comparison": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-modifiers": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-readme": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-constructor2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-unicode5": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_target_include_directories_build": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-iterators1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-conversions": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-msgpack": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-byte_container_with_subtype": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-inspection": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-meta": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-items": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-constructor1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-json_patch": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-json_pointer": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-unicode1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-regression1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_import_configure": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-udt_macro": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-class_const_iterator": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_add_subdirectory_build": {"run": "PASS", "test": "NONE", "fix": "PASS"}}
{"test-unicode4": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-convenience": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-reference_access": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-wstring": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_import_build": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-ubjson": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-bson": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-ordered_json": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-element_access2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_import_minver_build": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-unicode2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-cbor": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_add_subdirectory_configure": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-class_lexer": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-class_iterator": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-hash": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-iterators2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_fetch_content_configure": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-element_access1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-merge_patch": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-serialization": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-assert_macro": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-disabled_exceptions": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-diagnostics": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-pointer_access": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-alt-string": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-algorithms": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-class_parser": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-deserialization": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-noexcept": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-large_json": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-testsuites": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-regression2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_fetch_content_build": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-to_chars": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "download_test_data": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_target_include_directories_configure": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-allocator": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-unicode3": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_import_minver_configure": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-ordered_map": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-capacity": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-user_defined_input": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-udt": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-concepts": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-comparison": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-modifiers": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-readme": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-constructor2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-unicode5": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_target_include_directories_build": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-iterators1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-conversions": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-msgpack": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-byte_container_with_subtype": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-inspection": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-meta": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-items": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-constructor1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-json_patch": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-json_pointer": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-unicode1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-regression1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_import_configure": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-udt_macro": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test-class_const_iterator": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "cmake_add_subdirectory_build": {"run": "PASS", "test": "NONE", "fix": "PASS"}}
{"passed_count": 67, "failed_count": 0, "skipped_count": 0, "passed_tests": ["test-unicode4", "test-noexcept", "test-udt_macro", "test-large_json", "test-testsuites", "test-convenience", "test-regression2", "cmake_fetch_content_build", "test-reference_access", "test-wstring", "cmake_import_build", "test-to_chars", "download_test_data", "test-ubjson", "cmake_target_include_directories_configure", "test-bson", "test-allocator", "test-ordered_json", "test-element_access2", "cmake_import_minver_build", "test-unicode3", "test-unicode2", "test-cbor", "cmake_import_minver_configure", "test-ordered_map", "test-capacity", "test-class_lexer", "test-udt", "test-concepts", "test-comparison", "test-modifiers", "test-user_defined_input", "cmake_add_subdirectory_configure", "test-class_iterator", "test-constructor2", "test-hash", "test-readme", "test-unicode5", "cmake_target_include_directories_build", "test-iterators1", "test-conversions", "test-msgpack", "test-byte_container_with_subtype", "test-inspection", "test-iterators2", "test-meta", "test-items", "test-constructor1", "test-json_patch", "cmake_fetch_content_configure", "test-element_access1", "test-merge_patch", "test-serialization", "test-json_pointer", "test-deserialization", "test-assert_macro", "test-unicode1", "test-disabled_exceptions", "test-diagnostics", "test-pointer_access", "test-alt-string", "test-regression1", "cmake_import_configure", "test-algorithms", "test-class_parser", "test-class_const_iterator", "cmake_add_subdirectory_build"], "failed_tests": [], "skipped_tests": []}
{"passed_count": 0, "failed_count": 0, "skipped_count": 0, "passed_tests": [], "failed_tests": [], "skipped_tests": []}
{"passed_count": 67, "failed_count": 0, "skipped_count": 0, "passed_tests": ["test-unicode4", "test-noexcept", "test-udt_macro", "test-large_json", "test-testsuites", "test-convenience", "test-regression2", "cmake_fetch_content_build", "test-reference_access", "test-wstring", "cmake_import_build", "test-to_chars", "download_test_data", "test-ubjson", "cmake_target_include_directories_configure", "test-bson", "test-allocator", "test-ordered_json", "test-element_access2", "cmake_import_minver_build", "test-unicode3", "test-unicode2", "test-cbor", "cmake_import_minver_configure", "test-ordered_map", "test-capacity", "test-class_lexer", "test-udt", "test-concepts", "test-comparison", "test-modifiers", "test-user_defined_input", "cmake_add_subdirectory_configure", "test-class_iterator", "test-constructor2", "test-hash", "test-readme", "test-unicode5", "cmake_target_include_directories_build", "test-iterators1", "test-conversions", "test-msgpack", "test-byte_container_with_subtype", "test-inspection", "test-iterators2", "test-meta", "test-items", "test-constructor1", "test-json_patch", "cmake_fetch_content_configure", "test-element_access1", "test-merge_patch", "test-serialization", "test-json_pointer", "test-deserialization", "test-assert_macro", "test-unicode1", "test-disabled_exceptions", "test-diagnostics", "test-pointer_access", "test-alt-string", "test-regression1", "cmake_import_configure", "test-algorithms", "test-class_parser", "test-class_const_iterator", "cmake_add_subdirectory_build"], "failed_tests": [], "skipped_tests": []}