Skip to content

nlohmann::basic_json_document::owns_source

bool owns_source() const noexcept;

Returns whether the document holds its own copy of the parsed text or is borrowing the caller's buffer.

Return value

true if the document owns the text returned by source(), false if it borrows it (or if the document is discarded).

Exception safety

No-throw guarantee: this function never throws exceptions.

Complexity

Constant.

Notes

See the ownership table on parse for which inputs are borrowed and which are owned. A borrowed document (owns_source() == false) is only valid while the buffer it was parsed from is still alive.

Examples

Example
#include <iostream>
#include <string>
#include <nlohmann/json_view.hpp>

using json_document = nlohmann::json_document;

int main()
{
    std::cout << std::boolalpha;

    std::string text = R"({"a": 1})";

    // borrowed: the document only points into `text`; `text` must outlive it
    json_document borrowed = json_document::parse(text);
    std::cout << borrowed.owns_source() << '\n';

    // owned: parse_copy() always takes its own copy
    json_document copied = json_document::parse_copy(text);
    std::cout << copied.owns_source() << '\n';

    // owned: an rvalue std::string is moved in, not copied, but still owned
    json_document moved_in = json_document::parse(std::string(text));
    std::cout << moved_in.owns_source() << '\n';
}

Output:

false
true
true

See also

  • parse - deserialize from a compatible input
  • parse_copy - deserialize a copy of a compatible input, always owned
  • source - the parsed text

Version history

  • Added in version 3.13.0 unreleased.