Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

result

The type of result returned by library functions.

Synopsis

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

template<
    class T>
using result = boost::system::result< T >;
Description

This is an alias template used as the return type for functions that can either return a value, or fail with an error code. This is a brief synopsis of the type:

Declaration
template< class T >
class result
{
public:
    // Return true if the result contains an error
    constexpr bool has_error() const noexcept;

    // These two return true if the result contains a value
    constexpr bool has_value() const noexcept;
    constexpr explicit operator bool() const noexcept;

    // Return the value or throw an exception if has_value() == false
    constexpr T& value();
    constexpr T const& value() const;

    // Return the value, assuming the result contains it
    constexpr T& operator*();
    constexpr T const& operator*() const;

    // Return the error, which is default constructed if has_error() == false
    constexpr error_code error() const noexcept;
    ...more
};
Usage

Given the function try_value_to with this signature:

template< class T>
result< T > try_value_to( const value& jv );

The following statement captures the value in a variable upon success, otherwise throws:

int n = try_value_to<int>( jv ).value();

This statement captures the result in a variable and inspects the error condition:

result< int > r = try_value_to<int>( jv );
if( r )
    std::cout << *r;
else
    std::cout << r.error();
Remarks

This alias is deprecated in favor of boost::system::result. It is included for backwards compatibility and shouldn't be used in new code. It will be removed completely in version 1.87.0.

Template Parameters

Type

Description

T

The type of value held by the result.

Convenience header <boost/json.hpp>


PrevUpHomeNext