<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">= `value` JSON documents are represented in memory as instances of &lt;&lt;ref_value&gt;&gt;: a {req_Regular} type which satisfies {req_DefaultConstructible}, {req_CopyConstructible}, {req_CopyAssignable}, {req_MoveConstructible}, {req_MoveAssignable}, and many of the requirements of allocator-aware containers. It is implemented as a https://en.wikipedia.org/wiki/Tagged_union[__variant__] internally, and can dynamically store any of the six defined JSON value types:</string>
    <string name="">**null**: A</string>
    <string name="">https://en.cppreference.com/w/cpp/utility/variant/monostate[__monostate__] value, equivalent to `nullptr`.</string>
    <string name="">**boolean**: A boolean: either `true` or `false`.</string>
    <string name="">**number**: An integral or floating point value.</string>
    <string name="">**string**: A sequence of zero or more Unicode characters,</string>
    <string name="">similar to {std_string}.</string>
    <string name="">**array**: An ordered list of values, like {std_vector}.</string>
    <string name="">**object**: A collection of name/value pairs, also known as an</string>
    <string name="">https://en.wikipedia.org/wiki/Associative_array[__associative array__].</string>
    <string name="">Working With Values</string>
    <string name="">A &lt;&lt;ref_value&gt;&gt; constructed from `nullptr` or default constructed represents a null JSON element:</string>
    <string name="">The member function &lt;&lt;ref_value_kind,`value::kind`&gt;&gt; may be used to query the kind stored in the value. Alternatively, member functions like &lt;&lt;ref_value_is_object,`value::is_object`&gt;&gt; &lt;&lt;ref_value_is_number,`value::is_number`&gt;&gt; may be used to check whether or not the value is a particular kind:</string>
    <string name="">Functions like &lt;&lt;ref_value_if_object,`value::if_object`&gt;&gt; actually return a pointer to the object if the value is an object, otherwise they return null. This allows them to be used both in boolean contexts as above, and in assignments or conditional expressions to capture the value of the pointer:</string>
    <string name="">After a &lt;&lt;ref_value&gt;&gt; is constructed, its kind can change depending on what is assigned to it, or by calling functions such as &lt;&lt;ref_value_emplace_array,`value::emplace_array`&gt;&gt; or &lt;&lt;ref_value_emplace_bool,`value::emplace_bool`&gt;&gt;. If the assignment is successful, in other words it completes without any exceptions then the value is replaced. Otherwise, the value is unchanged. All operations which can fail to modify a value offer the strong exception safety guarantee.</string>
    <string name="">The following table shows all of the ways to determine and access the contents of a &lt;&lt;ref_value&gt;&gt;:</string>
    <string name="">.&lt;&lt;ref_value&gt;&gt; Accessors [%autowidth,cols=8] |=== |Kind |Representation |Emplacement |Kind Test |Pointer Access |`result` Access |Checked Access |Unchecked Access</string>
    <string name=":95">&lt;&lt;ref_kind,`kind::array`&gt;&gt;</string>
    <string name=":95">&lt;&lt;ref_array&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_emplace_array&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_is_array&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_if_array&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_try_as_array&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_as_array&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_get_array&gt;&gt;</string>
    <string name=":95">&lt;&lt;ref_kind,`kind::object`&gt;&gt;</string>
    <string name=":95">&lt;&lt;ref_object&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_emplace_object&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_is_object&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_if_object&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_try_as_object&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_as_object&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_get_object&gt;&gt;</string>
    <string name=":95">&lt;&lt;ref_kind,`kind::string`&gt;&gt;</string>
    <string name=":95">&lt;&lt;ref_string&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_emplace_string&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_is_string&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_if_string&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_try_as_string&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_as_string&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_get_string&gt;&gt;</string>
    <string name=":95">&lt;&lt;ref_kind,`kind::int64`&gt;&gt;</string>
    <string name="">https://en.cppreference.com/w/cpp/types/integer[`std::int64_t`]</string>
    <string name="">&lt;&lt;ref_value_emplace_int64&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_is_int64&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_if_int64&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_try_as_int64&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_as_int64&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_get_int64&gt;&gt;</string>
    <string name=":95">&lt;&lt;ref_kind,`kind::uint64`&gt;&gt;</string>
    <string name="">https://en.cppreference.com/w/cpp/types/integer[`std::uint64_t`]</string>
    <string name="">&lt;&lt;ref_value_emplace_uint64&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_is_uint64&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_if_uint64&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_try_as_uint64&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_as_uint64&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_get_uint64&gt;&gt;</string>
    <string name=":95">&lt;&lt;ref_kind,`kind::double_`&gt;&gt;</string>
    <string name="">https://en.cppreference.com/w/cpp/language/types[`double`]</string>
    <string name="">&lt;&lt;ref_value_emplace_double&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_is_double&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_if_double&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_try_as_double&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_as_double&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_get_double&gt;&gt;</string>
    <string name=":95">&lt;&lt;ref_kind,`kind::bool_`&gt;&gt;</string>
    <string name="">https://en.cppreference.com/w/cpp/language/types[`bool`]</string>
    <string name="">&lt;&lt;ref_value_emplace_bool&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_is_bool&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_if_bool&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_try_as_bool&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_as_bool&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_get_bool&gt;&gt;</string>
    <string name=":95">&lt;&lt;ref_kind,`kind::null`&gt;&gt;</string>
    <string name="">https://en.cppreference.com/w/cpp/language/nullptr[`std::nullptr_t`]</string>
    <string name="">&lt;&lt;ref_value_emplace_null&gt;&gt;</string>
    <string name="">&lt;&lt;ref_value_is_null&gt;&gt;</string>
    <string name="">^|&amp;mdash; |&lt;&lt;ref_value_try_as_null&gt;&gt; ^|&amp;mdash; ^|&amp;mdash;</string>
    <string name="">The emplace members of &lt;&lt;ref_value&gt;&gt; return a typed reference to the underlying representation. For example, the call to &lt;&lt;ref_value_emplace_string,`value::emplace_string`&gt;&gt; in the previous example returns a &lt;&lt;ref_string,`string&amp;`&gt;&gt;. This table shows the underlying type for each kind:</string>
    <string name="">Kind</string>
    <string name="">Type</string>
    <string name="">Description</string>
    <string name=":175">&lt;&lt;ref_kind,`kind::object`&gt;&gt;</string>
    <string name=":175">&lt;&lt;ref_object&gt;&gt;</string>
    <string name="">An associative array of string keys mapping to &lt;&lt;ref_value&gt;&gt; elements with an</string>
    <string name="">interface similar to {std_unordered_map}, that remembers insertion order.</string>
    <string name=":183">&lt;&lt;ref_kind,`kind::array`&gt;&gt;</string>
    <string name=":183">&lt;&lt;ref_array&gt;&gt;</string>
    <string name="">An ordered list of &lt;&lt;ref_value&gt;&gt; elements with an interface similar to</string>
    <string name="">{std_vector}.</string>
    <string name=":188">&lt;&lt;ref_kind,`kind::string`&gt;&gt;</string>
    <string name=":188">&lt;&lt;ref_string&gt;&gt;</string>
    <string name="">A https://en.wikipedia.org/wiki/UTF-8[__UTF-8__] encoded</string>
    <string name="">https://en.wikipedia.org/wiki/Unicode[Unicode] https://en.wikipedia.org/wiki/String_(computer_science)[string] of characters with an interface similar to {std_string}.</string>
    <string name=":195">&lt;&lt;ref_kind,`kind::int64`&gt;&gt;</string>
    <string name="">`std::int64_t`</string>
    <string name="">A 64 bit signed integer.</string>
    <string name=":195">&lt;&lt;ref_kind,`kind::uint64`&gt;&gt;</string>
    <string name="">`std::uint64_t`</string>
    <string name="">A 64 bit unsigned integer.</string>
    <string name=":195">&lt;&lt;ref_kind,`kind::double_`&gt;&gt;</string>
    <string name="">`double`</string>
    <string name="">A `double` holding a floating-point value.</string>
    <string name=":195">&lt;&lt;ref_kind,`kind::bool_`&gt;&gt;</string>
    <string name="">https://en.cppreference.com/w/cpp/keyword/bool[`bool`]</string>
    <string name="">A `bool` holding `true` or `false`.</string>
    <string name=":195">&lt;&lt;ref_kind,`kind::null`&gt;&gt;</string>
    <string name="">^| &amp;mdash; | A monostate value representing null. |===</string>
    <string name="">The return value from emplace can be used to perform assignment or to capture a reference to the underlying element for later inspection or modification:</string>
    <string name="">If the &lt;&lt;ref_kind&gt;&gt; of a &lt;&lt;ref_value&gt;&gt; is known, functions such as &lt;&lt;ref_value_as_bool,`value::as_bool`&gt;&gt; or &lt;&lt;ref_value_as_string,`value::as_string`&gt;&gt; may be used to obtain a reference to the underlying representation without changing the existing value:</string>
    <string name="">However, as shown above these functions throw an exception if the kind in the &lt;&lt;ref_value&gt;&gt; does not match the kind denoted by the function signature. This can be used as a concise form of validation: access values as if they were the right type, but handle the resulting exception indicating if the schema of the JSON is not valid.</string>
    <string name="">We can query a value for its underlying representation of a particular kind in a way that does not throw exceptions by requesting a pointer which may be null, instead of a reference. Here we use &lt;&lt;ref_value_if_string,`value::if_string`&gt;&gt; to conditionally perform an assignment without using exceptions:</string>
    <string name="">Functions returning {ref_result} allow you to use both approaches:</string>
    <string name="">Formatted Output</string>
    <string name="">When a &lt;&lt;ref_value&gt;&gt; is formatted to a {std_ostream}, the result is serialized JSON as if by calling &lt;&lt;ref_serialize&gt;&gt;.</string>
</resources>
