template<typename T = void>
result class
A result type for library operations which may fail, returning an error message.
Template parameters | |
---|---|
T | The 'success' value type. |
Public types
-
using error_type = string_
view - The error type stored internally when the operation fails.
- using value_type = T
- The value type stored when the operation was successful.
Constructors, destructors, conversion operators
-
template<typename U>operator result<U>() const noexcept
- Converts this result object into one representing a different but compatible value_
type. - result() defaulted noexcept
- Default-constructs an 'error' result with an empty string for the error message.
- result(const result&) defaulted noexcept
- Copy constructor.
- result(result&&) defaulted noexcept
- Move constructor.
-
result(std::
true_type) noexcept - Default-constructs a 'success' result.
-
result(const value_
type& val, std:: true_type) noexcept - Constructs a 'success' result.
-
result(value_
type&& val, std:: true_type) noexcept - Constructs a 'success' result.
-
result(const value_
type& val) noexcept - Constructs a 'success' result.
-
result(value_
type&& val) noexcept - Constructs a 'success' result.
-
result(const error_
type& err, std:: false_type) noexcept - Constructs an 'error' result.
-
result(std::
false_type) noexcept - Default-constructs an 'error' result with an empty string for the error message.
-
result(const error_
type& err) noexcept - Constructs an 'error' result.
- result(bool success) explicit noexcept
- Constructs a result from a boolean, default-constructing the value/error accordingly.
- ~result() defaulted noexcept
- Destructor.
Public functions
Error result values
-
auto error() const -> const error_
type& noexcept - Returns the error message describing why the operation failed.
- operator const error_type&() const explicit noexcept
- Returns the error message describing why the operation failed.
Result checks
- auto ok() const -> bool noexcept
- Returns true if the operation was a success.
- operator bool() const explicit noexcept
- Returns true if the operation was a success.
- auto operator!() const -> bool noexcept
- Returns true if the operation failed.
Successful result values
- operator const value_type&&() const && explicit noexcept
- Returns the internal 'success' value.
- operator value_type&() & explicit noexcept
- Returns the internal 'success' value.
- operator value_type&() const & explicit noexcept
- Returns the internal 'success' value.
- operator value_type&&() && explicit noexcept
- Returns the internal 'success' value.
-
auto operator*() & -> value_
type& noexcept - Returns the internal 'success' value.
-
auto operator*() const & -> const value_
type& noexcept - Returns the internal 'success' value.
-
auto operator*() && -> value_
type&& noexcept - Returns the internal 'success' value.
-
auto operator*() const && -> const value_
type&& noexcept - Returns the internal 'success' value.
-
auto operator->() -> value_
type* noexcept - Returns the internal 'success' value.
-
auto operator->() const -> const value_
type* noexcept - Returns the internal 'success' value.
-
auto value() & -> value_
type& noexcept - Returns the internal 'success' value.
-
auto value() const & -> const value_
type& noexcept - Returns the internal 'success' value.
-
auto value() && -> value_
type&& noexcept - Returns the internal 'success' value.
-
auto value() const && -> const value_
type&& noexcept - Returns the internal 'success' value.
Typedef documentation
template<typename T>
using stim:: result<T>:: error_type = string_ view
The error type stored internally when the operation fails.
Function documentation
template<typename T>
template<typename U>
stim:: result<T>:: operator result<U>() const noexcept
template<typename U>
Converts this result object into one representing a different but compatible value_
Error messages remain unchanged after converting so this conversion operator may be used to reduce a series of operations from more to less specialized, deferring error handling until the end:
stim::result<stim::object_handle> obj{ "unknown object type"_ssv }; switch (sim_object_type_id) { case 0: { stim::rigid_body_description desc{ /* ... */ }; obj = sim.add_object(desc); // converts from result<rigid_body_handle> break; } case 1: { stim::soft_body_description desc{ /* ... */ }; obj = sim.add_object(desc); // converts from result<soft_body_handle> break; } case 2: { stim::volumetric_body_description desc{ /* ... */ }; obj = sim.add_object(desc); // converts from result<volumetric_body_handle> break; } } if (!obj) { std::cerr << obj.error().data() << "\n"; return; } // can be reduced further to result<> if the actual value is irrelevant stim::result<> obj_result = obj; assert(obj_result);
template<typename T>
stim:: result<T>:: result(std:: true_type) noexcept
Default-constructs a 'success' result.
template<typename T>
stim:: result<T>:: result(const value_ type& val,
std:: true_type) noexcept
Constructs a 'success' result.
template<typename T>
stim:: result<T>:: result(value_ type&& val,
std:: true_type) noexcept
Constructs a 'success' result.
template<typename T>
stim:: result<T>:: result(const value_ type& val) noexcept
Constructs a 'success' result.
template<typename T>
stim:: result<T>:: result(value_ type&& val) noexcept
Constructs a 'success' result.
template<typename T>
stim:: result<T>:: result(const error_ type& err) noexcept
Constructs an 'error' result.
template<typename T>
stim:: result<T>:: result(bool success) explicit noexcept
Constructs a result from a boolean, default-constructing the value/error accordingly.
template<typename T>
stim:: result<T>:: operator const error_type&() const explicit noexcept
Returns the error message describing why the operation failed.
template<typename T>
stim:: result<T>:: operator const value_type&&() const && explicit noexcept
Returns the internal 'success' value.
template<typename T>
stim:: result<T>:: operator value_type&() & explicit noexcept
Returns the internal 'success' value.
template<typename T>
stim:: result<T>:: operator value_type&() const & explicit noexcept
Returns the internal 'success' value.
template<typename T>
stim:: result<T>:: operator value_type&&() && explicit noexcept
Returns the internal 'success' value.
template<typename T>
value_ type* stim:: result<T>:: operator->() noexcept
Returns the internal 'success' value.
template<typename T>
const value_ type* stim:: result<T>:: operator->() const noexcept
Returns the internal 'success' value.