mirror of
https://github.com/nlohmann/json.git
synced 2026-07-10 04:25:11 +00:00
2.3 KiB
2.3 KiB
JSON_HAS_FILESYSTEM / JSON_HAS_EXPERIMENTAL_FILESYSTEM
#define JSON_HAS_FILESYSTEM /* value */
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM /* value */
When compiling with C++17, the library provides conversions from and to
std::filesystem::path. As compiler support for filesystem is
limited, the library tries to detect whether
<filesystem>/std::filesystem (JSON_HAS_FILESYSTEM) or
<experimental/filesystem>/std::experimental::filesystem
(JSON_HAS_EXPERIMENTAL_FILESYSTEM) should be used. To override the built-in check, define JSON_HAS_FILESYSTEM or
JSON_HAS_EXPERIMENTAL_FILESYSTEM to 1.
Default definition
The default value is detected based on the preprocessor macros #!cpp __cpp_lib_filesystem,
#!cpp __cpp_lib_experimental_filesystem, #!cpp __has_include(<filesystem>), or
#!cpp __has_include(<experimental/filesystem>).
!!! info "Known compiler/stdlib exclusions"
Even when the feature-test macro indicates filesystem support is available, the library disables it on the following broken toolchains:
- **MinGW + GCC 8** — disabled entirely (broken `std::filesystem` implementation; [MinGW-w64 bug 737](https://sourceforge.net/p/mingw-w64/bugs/737/))
- **GCC (non-Clang) < 8** — disabled (no filesystem support)
- **Clang < 7** — disabled (no filesystem support)
- **MSVC < 19.14** — disabled (no filesystem support)
- **iOS < 13** — disabled (no filesystem support)
- **macOS < Catalina (10.15)** — disabled (no filesystem support)
If `JSON_HAS_FILESYSTEM` or `JSON_HAS_EXPERIMENTAL_FILESYSTEM` is `0` despite `__cpp_lib_filesystem` being defined, one
of the exclusions above likely applies to your toolchain.
Notes
- Note that older compilers or older versions of libstdc++ also require the library
stdc++fsto be linked to for filesystem support. - Both macros are undefined outside the library.
Examples
??? example
The code below forces the library to use the header `<experimental/filesystem>`.
```cpp
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
#include <nlohmann/json.hpp>
...
```
Version history
- Added in version 3.10.5.