Files
json/docs/mkdocs/docs/api/basic_json/boolean_t.md
T
Niels LohmannandClaude Opus 5 599bb1b68c docs: document the implicit requirements on basic_json's template parameters
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>
2026-08-28 17:38:55 +00:00

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_json value (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.