57 lines
1.4 KiB
Plaintext
57 lines
1.4 KiB
Plaintext
|
|
#include "result.h"
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
namespace meta
|
||
|
|
{
|
||
|
|
template<typename Result, typename Error>
|
||
|
|
inline Result& result<Result, Error>::value()
|
||
|
|
{
|
||
|
|
return std::get<Success>(*this);
|
||
|
|
}
|
||
|
|
template<typename Result, typename Error>
|
||
|
|
template<typename U, typename>
|
||
|
|
Result result<Result, Error>::value_or(U&& result) const
|
||
|
|
{
|
||
|
|
return bool(*this) ? **this : static_cast<Result>(std::forward<U>(result));
|
||
|
|
}
|
||
|
|
template<typename Result, typename Error>
|
||
|
|
inline Error& result<Result, Error>::error()
|
||
|
|
{
|
||
|
|
return std::get<Failure>(*this);
|
||
|
|
}
|
||
|
|
template<typename Result, typename Error>
|
||
|
|
inline const Result& result<Result, Error>::value() const
|
||
|
|
{
|
||
|
|
return std::get<Success>(*this);
|
||
|
|
}
|
||
|
|
template<typename Result, typename Error>
|
||
|
|
inline const Error& result<Result, Error>::error() const
|
||
|
|
{
|
||
|
|
return std::get<Failure>(*this);
|
||
|
|
}
|
||
|
|
template<typename Result, typename Error>
|
||
|
|
inline result<Result, Error>::operator bool() const
|
||
|
|
{
|
||
|
|
return Base::index() == Success;
|
||
|
|
}
|
||
|
|
template<typename Result, typename Error>
|
||
|
|
inline Result& result<Result, Error>::operator*()
|
||
|
|
{
|
||
|
|
return value();
|
||
|
|
}
|
||
|
|
template<typename Result, typename Error>
|
||
|
|
inline Result* result<Result, Error>::operator->()
|
||
|
|
{
|
||
|
|
return &operator*();
|
||
|
|
}
|
||
|
|
template<typename Result, typename Error>
|
||
|
|
const Result& result<Result, Error>::operator*() const
|
||
|
|
{
|
||
|
|
return value();
|
||
|
|
}
|
||
|
|
template<typename Result, typename Error>
|
||
|
|
const Result* result<Result, Error>::operator->() const
|
||
|
|
{
|
||
|
|
return &operator*();
|
||
|
|
}
|
||
|
|
}
|