🚨 fix warning
This commit is contained in:
parent
7543e179ef
commit
7e87863a6d
@ -24,6 +24,13 @@ The diagnostics messages can also be controlled with the CMake option `JSON_Diag
|
|||||||
|
|
||||||
The library targets C++11, but also supports some features introduced in later C++ versions (e.g., `std::string_view` support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.
|
The library targets C++11, but also supports some features introduced in later C++ versions (e.g., `std::string_view` support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.
|
||||||
|
|
||||||
|
## `JSON_HAS_FILESYSTEM`, `JSON_HAS_EXPERIMENTAL_FILESYSTEM`
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
||||||
## `JSON_NOEXCEPTION`
|
## `JSON_NOEXCEPTION`
|
||||||
|
|
||||||
Exceptions can be switched off by defining the symbol `JSON_NOEXCEPTION`.
|
Exceptions can be switched off by defining the symbol `JSON_NOEXCEPTION`.
|
||||||
|
|||||||
@ -37,23 +37,25 @@
|
|||||||
#define JSON_HAS_CPP_11
|
#define JSON_HAS_CPP_11
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef JSON_HAS_CPP_17
|
#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM)
|
||||||
#if defined(__cpp_lib_filesystem)
|
#ifdef JSON_HAS_CPP_17
|
||||||
#define JSON_HAS_FILESYSTEM 1
|
#if defined(__cpp_lib_filesystem)
|
||||||
#elif defined(__cpp_lib_experimental_filesystem)
|
#define JSON_HAS_FILESYSTEM 1
|
||||||
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
#elif defined(__cpp_lib_experimental_filesystem)
|
||||||
#elif !defined(__has_include)
|
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||||
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
#elif !defined(__has_include)
|
||||||
#elif __has_include(<filesystem>)
|
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||||
#define JSON_HAS_FILESYSTEM 1
|
#elif __has_include(<filesystem>)
|
||||||
#elif __has_include(<experimental/filesystem>)
|
#define JSON_HAS_FILESYSTEM 1
|
||||||
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
#elif __has_include(<experimental/filesystem>)
|
||||||
#endif
|
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
// std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/
|
// std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/
|
||||||
#if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8
|
#if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8
|
||||||
#undef JSON_HAS_FILESYSTEM
|
#undef JSON_HAS_FILESYSTEM
|
||||||
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -2325,23 +2325,25 @@ using is_detected_convertible =
|
|||||||
#define JSON_HAS_CPP_11
|
#define JSON_HAS_CPP_11
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef JSON_HAS_CPP_17
|
#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM)
|
||||||
#if defined(__cpp_lib_filesystem)
|
#ifdef JSON_HAS_CPP_17
|
||||||
#define JSON_HAS_FILESYSTEM 1
|
#if defined(__cpp_lib_filesystem)
|
||||||
#elif defined(__cpp_lib_experimental_filesystem)
|
#define JSON_HAS_FILESYSTEM 1
|
||||||
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
#elif defined(__cpp_lib_experimental_filesystem)
|
||||||
#elif !defined(__has_include)
|
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||||
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
#elif !defined(__has_include)
|
||||||
#elif __has_include(<filesystem>)
|
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||||
#define JSON_HAS_FILESYSTEM 1
|
#elif __has_include(<filesystem>)
|
||||||
#elif __has_include(<experimental/filesystem>)
|
#define JSON_HAS_FILESYSTEM 1
|
||||||
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
#elif __has_include(<experimental/filesystem>)
|
||||||
#endif
|
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
// std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/
|
// std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/
|
||||||
#if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8
|
#if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8
|
||||||
#undef JSON_HAS_FILESYSTEM
|
#undef JSON_HAS_FILESYSTEM
|
||||||
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -49,25 +49,35 @@ using ordered_json = nlohmann::ordered_json;
|
|||||||
#ifdef JSON_HAS_CPP_17
|
#ifdef JSON_HAS_CPP_17
|
||||||
#include <variant>
|
#include <variant>
|
||||||
|
|
||||||
#if defined(__cpp_lib_filesystem)
|
#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM)
|
||||||
#define JSON_HAS_FILESYSTEM 1
|
#if defined(__cpp_lib_filesystem)
|
||||||
#elif defined(__cpp_lib_experimental_filesystem)
|
#define JSON_HAS_FILESYSTEM 1
|
||||||
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
#elif defined(__cpp_lib_experimental_filesystem)
|
||||||
#elif !defined(__has_include)
|
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||||
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
#elif !defined(__has_include)
|
||||||
#elif __has_include(<filesystem>)
|
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||||
#define JSON_HAS_FILESYSTEM 1
|
#elif __has_include(<filesystem>)
|
||||||
#elif __has_include(<experimental/filesystem>)
|
#define JSON_HAS_FILESYSTEM 1
|
||||||
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
#elif __has_include(<experimental/filesystem>)
|
||||||
#endif
|
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
// std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/
|
// std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/
|
||||||
#if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8
|
#if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8
|
||||||
#undef JSON_HAS_FILESYSTEM
|
#undef JSON_HAS_FILESYSTEM
|
||||||
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
||||||
|
#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef JSON_HAS_FILESYSTEM
|
||||||
|
#define JSON_HAS_FILESYSTEM 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#if JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
#if JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
||||||
#include <experimental/filesystem>
|
#include <experimental/filesystem>
|
||||||
namespace nlohmann::detail
|
namespace nlohmann::detail
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user