value_from

Convert an object of type T to value.

Synopsis

Defined in header <boost/json/value_from.hpp>.

template<
    class T,
    class Context>
void
value_from(
    T&& t,
    Context const& ctx,
    value& jv); (1)

template<
    class T,
    class Context>
value
value_from(
    T&& t,
    Context const& ctx,
    storage_ptr sp = {}); (2)

template<
    class T>
void
value_from(
    T&& t,
    value& jv); (3)

template<
    class T>
value
value_from(
    T&& t,
    storage_ptr sp = {}); (4)

Description

This function attempts to convert an object of type T to value using

  • one of value's constructors,

  • a library-provided generic conversion, or

  • a user-provided overload of tag_invoke.

Out of the box the function supports types satisfying SequenceContainer, arrays, arithmetic types, bool, std::tuple, std::pair, std::variant, std::optional, std::monostate, and std::nullopt_t.

Conversion of other types is done by calling an overload of tag_invoke found by argument-dependent lookup. Its signature should be similar to:

template< class FullContext >
void tag_invoke( value_from_tag, value&, T, const Context&, const FullContext& );

or

void tag_invoke( value_from_tag, value&, T, const Context& );

or

void tag_invoke( value_from_tag, value&, T );

The overloads are checked for existence in that order and the first that matches will be selected.

The ctx argument can be used either as a tag type to provide conversions for third-party types, or to pass extra data to the conversion function.

Overloads (2) and (4) construct their return value using the storage_ptr sp, which ensures that the memory resource is correctly propagated.

Exception Safety

Strong guarantee.

Template Parameters

Type Description

T

The type of the object to convert.

Context

The type of context passed to the conversion function.

Return Value

Overloads (2) and (4) return t converted to value. Overloads (1) and 3 return void instead and pass their result via the out parameter jv.

Parameters

Name Description

t

The object to convert.

ctx

Context passed to the conversion function.

jv

value out parameter.

sp

A storage pointer referring to the memory resource to use for the returned value.

See Also

Convenience header <boost/json.hpp>