Files
json/docs/mkdocs/docs/api/basic_json/emplace_back.md
T
Niels Lohmann 52b72b5684 Improve documentation: byte layouts, release pages, See also, dark-mode images (#5906)
- Make the iterator range illustrations legible in dark mode (prefers-color-scheme
  rules inside the SVGs).
- Add a "Byte layout" section with a color-coded byte table to each binary format
  page (BJData, BON8, BSON, CBOR, MessagePack, UBJSON), and highlight the smallest
  size per file in the comparison table.
- Add "See also" sections to the overview pages that lacked one.
- Split the release notes into one page per release, grouped by minor version on
  the overview page, with an "API changes" section per release generated from the
  API pages' version histories (hooks/api_changes.py).
- Fact-check the release notes and version histories against the release tags and
  correct wrong or misleading entries (e.g., json_serializer 2.1.0, merge_patch
  3.1.0, items, count, operator[], to_bjdata, std::string_view key support).

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-24 17:57:44 +02:00

1.9 KiB

nlohmann::basic_json::emplace_back

template<class... Args>
reference emplace_back(Args&& ... args);

Creates a JSON value from the passed parameters args to the end of the JSON value. If the function is called on a JSON #!json null value, an empty array is created before appending the value created from args.

Template parameters

Args
compatible types to create a basic_json object

Iterator invalidation

By adding an element to the end of the array, a reallocation can happen, in which case all iterators (including the end() iterator) and all references to the elements are invalidated. Otherwise, only the end() iterator is invalidated.

Parameters

args (in)
arguments to forward to a constructor of basic_json

Return value

reference to the inserted element

Exception safety

Strong guarantee: if an exception is thrown, there are no changes to any JSON value. As an exception, a #!json null value is converted to an empty array before the element is added and keeps that type if adding the element throws.

Exceptions

Throws type_error.311 when called on a type other than JSON array or #!json null; example: "cannot use emplace_back() with number"

Complexity

Amortized constant.

Examples

??? example

The example shows how `emplace_back()` can be used to add elements to a JSON array. Note how the `null` value was
silently converted to a JSON array.
    
```cpp
--8<-- "examples/emplace_back.cpp"
```

Output:

```json
--8<-- "examples/emplace_back.output"
```

See also

Version history

  • Added in version 2.0.8.
  • Returns reference since 3.7.0.