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