1
0
mirror of https://github.com/nlohmann/json synced 2024-11-24 04:40:13 +00:00

Fix compile error with _HAS_STATIC_RTTI=0 (#4046)

This commit is contained in:
alferov 2023-09-24 12:23:41 +03:00 committed by GitHub
parent bbd2e1636d
commit 6d4b72d3c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 57 additions and 4 deletions

View File

@ -0,0 +1,31 @@
# JSON_HAS_STATIC_RTTI
```cpp
#define JSON_HAS_STATIC_RTTI /* value */
```
This macro indicates whether the standard library has any support for RTTI (run time type information).
Possible values are `1` when supported or `0` when unsupported.
## Default definition
The default value is detected based on the preprocessor macro `#!cpp _HAS_STATIC_RTTI`.
When the macro is not defined, the library will define it to its default value.
## Examples
??? example
The code below forces the library to enable support for libraries with RTTI dependence:
```cpp
#define JSON_HAS_STATIC_RTTI 1
#include <nlohmann/json.hpp>
...
```
## Version history
- Added in version ?.

View File

@ -133,6 +133,14 @@
#endif #endif
#endif #endif
#ifndef JSON_HAS_STATIC_RTTI
#if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0
#define JSON_HAS_STATIC_RTTI 1
#else
#define JSON_HAS_STATIC_RTTI 0
#endif
#endif
#ifdef JSON_HAS_CPP_17 #ifdef JSON_HAS_CPP_17
#define JSON_INLINE_VARIABLE inline #define JSON_INLINE_VARIABLE inline
#else #else

View File

@ -38,6 +38,7 @@
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
#undef JSON_HAS_THREE_WAY_COMPARISON #undef JSON_HAS_THREE_WAY_COMPARISON
#undef JSON_HAS_RANGES #undef JSON_HAS_RANGES
#undef JSON_HAS_STATIC_RTTI
#undef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #undef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
#endif #endif

View File

@ -62,7 +62,9 @@
#include <nlohmann/ordered_map.hpp> #include <nlohmann/ordered_map.hpp>
#if defined(JSON_HAS_CPP_17) #if defined(JSON_HAS_CPP_17)
#include <any> #if JSON_HAS_STATIC_RTTI
#include <any>
#endif
#include <string_view> #include <string_view>
#endif #endif
@ -1886,7 +1888,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec
#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1910 && _MSC_VER <= 1914)) #if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1910 && _MSC_VER <= 1914))
detail::negation<std::is_same<ValueType, std::string_view>>, detail::negation<std::is_same<ValueType, std::string_view>>,
#endif #endif
#if defined(JSON_HAS_CPP_17) #if defined(JSON_HAS_CPP_17) && JSON_HAS_STATIC_RTTI
detail::negation<std::is_same<ValueType, std::any>>, detail::negation<std::is_same<ValueType, std::any>>,
#endif #endif
detail::is_detected_lazy<detail::get_template_function, const basic_json_t&, ValueType> detail::is_detected_lazy<detail::get_template_function, const basic_json_t&, ValueType>

View File

@ -2485,6 +2485,14 @@ JSON_HEDLEY_DIAGNOSTIC_POP
#endif #endif
#endif #endif
#ifndef JSON_HAS_STATIC_RTTI
#if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0
#define JSON_HAS_STATIC_RTTI 1
#else
#define JSON_HAS_STATIC_RTTI 0
#endif
#endif
#ifdef JSON_HAS_CPP_17 #ifdef JSON_HAS_CPP_17
#define JSON_INLINE_VARIABLE inline #define JSON_INLINE_VARIABLE inline
#else #else
@ -19268,7 +19276,9 @@ NLOHMANN_JSON_NAMESPACE_END
#if defined(JSON_HAS_CPP_17) #if defined(JSON_HAS_CPP_17)
#include <any> #if JSON_HAS_STATIC_RTTI
#include <any>
#endif
#include <string_view> #include <string_view>
#endif #endif
@ -21092,7 +21102,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec
#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1910 && _MSC_VER <= 1914)) #if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1910 && _MSC_VER <= 1914))
detail::negation<std::is_same<ValueType, std::string_view>>, detail::negation<std::is_same<ValueType, std::string_view>>,
#endif #endif
#if defined(JSON_HAS_CPP_17) #if defined(JSON_HAS_CPP_17) && JSON_HAS_STATIC_RTTI
detail::negation<std::is_same<ValueType, std::any>>, detail::negation<std::is_same<ValueType, std::any>>,
#endif #endif
detail::is_detected_lazy<detail::get_template_function, const basic_json_t&, ValueType> detail::is_detected_lazy<detail::get_template_function, const basic_json_t&, ValueType>
@ -24498,6 +24508,7 @@ inline void swap(nlohmann::NLOHMANN_BASIC_JSON_TPL& j1, nlohmann::NLOHMANN_BASIC
#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
#undef JSON_HAS_THREE_WAY_COMPARISON #undef JSON_HAS_THREE_WAY_COMPARISON
#undef JSON_HAS_RANGES #undef JSON_HAS_RANGES
#undef JSON_HAS_STATIC_RTTI
#undef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #undef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
#endif #endif