...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Convert a value
to a boost::system::result<T>
.
Defined in header <boost/json/value_to.hpp>
template< class T>result_for
< T,value
>::type try_value_to( constvalue
& jv);
This function attempts to convert a value
to result<T>
using
value
's
accessors, or
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:
result<T> tag_invoke( try_value_to_tag<T>, const value& );
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.
! std::is_reference< T >::value
Strong guarantee.
Type |
Description |
---|---|
|
The type to convert to. |
Name |
Description |
---|---|
|
The |
jv
converted to result<T>
.
value_to_tag
,
value_to
,
value_from
,
tag_invoke:
A general pattern for supporting customisable functions
Convenience header <boost/json.hpp>