Result.h header

#include <ew/core/Result.h>

Namespace ew::core

Result class

class ew::core::Result

The outcome of an operation that can fail recoverably: either a value of type T or an Error. This is how the codebase reports recoverable failures (file parse, IO, validation); exceptions are reserved for programmer errors (CODING_STANDARDS section 6.5). Check isOk() before calling value().

Members

ew::core::Result< T >::Result(T value)

Constructs a successful result holding value (implicit for ergonomic returns).

ew::core::Result< T >::Result(Error error)

Constructs a failed result holding error (implicit for ergonomic returns).

bool ew::core::Result< T >::isOk() const

Returns true if the operation succeeded (a value is present).

bool ew::core::Result< T >::isError() const

Returns true if the operation failed (an error is present).

T & ew::core::Result< T >::value() &

Returns the value for inspection or in-place modification. Precondition: isOk().

const T & ew::core::Result< T >::value() const &

Returns the value. Precondition: isOk().

T && ew::core::Result< T >::value() &&

Extracts the value by move, for move-only types such as std::unique_ptr; the result is left holding a moved-from value. Precondition: isOk().

const Error & ew::core::Result< T >::error() const

Returns the error. Precondition: isError().

Result< void > class

class ew::core::Result< void >

The outcome of a value-less operation that can fail recoverably: success or an Error.

Members

ew::core::Result< void >::Result()=default

Constructs a successful (empty) result.

ew::core::Result< void >::Result(Error error)

Constructs a failed result holding error (implicit for ergonomic returns).

bool ew::core::Result< void >::isOk() const

Returns true if the operation succeeded.

bool ew::core::Result< void >::isError() const

Returns true if the operation failed.

const Error & ew::core::Result< void >::error() const

Returns the error. Precondition: isError().

void & ew::core::Result< void >::value() &

Returns the value for inspection or in-place modification. Precondition: isOk().