try_value_to
Convert a value
to a boost::system::result
.
Synopsis
Defined in header <boost/json/value_to.hpp>.
template<
class T,
class Context>
result_for< T, value >::type
try_value_to(
value const& jv,
Context const& ctx); (1)
template<
class T>
result_for< T, value >::type
try_value_to(
const value& jv); (2)
Description
This function attempts to convert a value
to result<T>
using
-
one of
value
's accessors, or -
a library-provided generic conversion, or
-
a user-provided overload of
tag_invoke
.
Out of the box the function supports default constructible types satisfying SequenceContainer, arrays, arithmetic types, bool
, std::tuple
, std::pair
, std::optional
, std::variant
, std::nullptr_t
, and structs and enums described using Boost.Describe.
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 >
result<T> tag_invoke( try_value_to_tag<T>, const value&, const Context& , const FullContext& );
or
result<T> tag_invoke( try_value_to_tag<T>, const value&, const Context& );
or
result<T> tag_invoke( try_value_to_tag<T>, const value& );
The overloads are checked for existence in that order and the first that matches will be selected.
If an error occurs during conversion, the result will store the error code associated with the error. If an exception is thrown, the function will attempt to retrieve the associated error code and return it, otherwise it will return error::exception
, unless the exception type is std::bad_alloc
, which will be allowed to propagate.
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.
Constraints
! std::is_reference< T >::value
Exception Safety
Strong guarantee.
Template Parameters
Type | Description |
---|---|
|
The type to convert to. |
|
The type of context passed to the conversion function. |
Return Value
jv
converted to result<T>
.
Parameters
Name | Description |
---|---|
|
The |
|
Context passed to the conversion function. |
See Also
value_to_tag
, value_to
, value_from
, tag_invoke: A general pattern for supporting customisable functions.
Convenience header <boost/json.hpp>