2022-04-25 23:40:45 +03:00
|
|
|
# JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
#define JSON_HAS_CPP_11
|
|
|
|
|
#define JSON_HAS_CPP_14
|
|
|
|
|
#define JSON_HAS_CPP_17
|
|
|
|
|
#define JSON_HAS_CPP_20
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
## Default definition
|
|
|
|
|
|
|
|
|
|
The default value is detected based on preprocessor macros such as `#!cpp __cplusplus`, `#!cpp _HAS_CXX17`, or
|
|
|
|
|
`#!cpp _MSVC_LANG`.
|
|
|
|
|
|
|
|
|
|
## Notes
|
|
|
|
|
|
|
|
|
|
- `#!cpp JSON_HAS_CPP_11` is always defined.
|
|
|
|
|
- All macros are undefined outside the library.
|
|
|
|
|
|
2022-05-17 14:08:56 +03:00
|
|
|
## Examples
|
|
|
|
|
|
|
|
|
|
??? example
|
|
|
|
|
|
|
|
|
|
The code below forces the library to use the C++14 standard:
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
#define JSON_HAS_CPP_14 1
|
|
|
|
|
#include <nlohmann/json.hpp>
|
|
|
|
|
|
|
|
|
|
...
|
|
|
|
|
```
|
|
|
|
|
|
2022-04-25 23:40:45 +03:00
|
|
|
## Version history
|
|
|
|
|
|
|
|
|
|
- Added in version 3.10.5.
|