zengine-old/engine/3rdparty/zlib/include/meta/result.inl

57 lines
1.4 KiB
Plaintext
Raw Permalink Normal View History

2024-06-17 00:25:00 +08:00
#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*();
}
}