mirror of
https://github.com/nlohmann/json.git
synced 2026-10-02 22:14:14 +07:00
The requirements that basic_json places on its eleven template parameters were only implied by how the library uses the resulting object_t, array_t, string_t, etc. Consumers had to discover them by trial and error. Add "Template Parameter Requirements" collecting them, split into what is always required and what is only required when a particular part of the API is instantiated. Notable findings that were previously undocumented: - ObjectType must provide a key_compare member type (actual_object_comparator names object_t::key_compare in both arms of a std::conditional), and its third template parameter is used as a comparator, so std::unordered_map cannot be used without a wrapper. - ArrayType must provide capacity() -- push_back(), emplace_back(), operator+=(), and operator[](size_type) call it unconditionally -- and needs random-access iterators, so std::deque and std::list do not work. - StringType needs contiguous, null-terminated data(), a one-byte value_type, and either assignability from std::to_string or an ADL int_to_string(). - NumberFloatType must be float, double, or long double for parsing and serialization; the integer types must satisfy std::is_integral. - AllocatorType must be stateless, support incomplete types, and use plain pointers. - BooleanType and the number types are union members and must be trivial. Link the new page from the basic_json overview, the types feature page, and the individual type alias pages, and correct the container examples given for ObjectType (std::unordered_map) and ArrayType (std::list), which do not work. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018hxZxz8svM54c6ATEvXp5E Signed-off-by: Niels Lohmann <mail@nlohmann.me>
1.3 KiB
1.3 KiB
nlohmann::basic_json::boolean_t
using boolean_t = BooleanType;
The type used to store JSON booleans.
RFC 8259 implicitly describes a boolean as a type which differentiates the two
literals #!json true and #!json false.
To store boolean values in C++, a type is defined by the template parameter BooleanType which chooses the type to use.
Template parameters
BooleanType- the type to store booleans. As it is stored directly inside a
basic_jsonvalue (in a union), it must be a trivially default-constructible, trivially copyable, and trivially destructible type that is convertible to and from#!cpp bool. See Template Parameter Requirements.
Notes
Default type
With the default values for BooleanType (#!cpp bool), the default value for boolean_t is #!cpp bool.
Storage
Boolean values are stored directly inside a basic_json type.
Examples
??? example
The following code shows that `boolean_t` is by default, a typedef to `#!cpp bool`.
```cpp
--8<-- "examples/boolean_t.cpp"
```
Output:
```json
--8<-- "examples/boolean_t.output"
```
Version history
- Added in version 1.0.0.