diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2018-11-26 20:47:47 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2018-11-26 20:47:47 +0100 |
| commit | bae92cea3bcbacd7883499da61a0e54f13da6d23 (patch) | |
| tree | fc6c44d8d52ef57ee0b154ab97257db5fa542c6a /src/optional.hpp | |
| parent | 817a09c2192953b72cd1b5fbc0c4f9c96ae44776 (diff) | |
| download | wanda-bae92cea3bcbacd7883499da61a0e54f13da6d23.tar.xz wanda-bae92cea3bcbacd7883499da61a0e54f13da6d23.zip | |
wanda: architecture rework
Diffstat (limited to 'src/optional.hpp')
| -rw-r--r-- | src/optional.hpp | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/src/optional.hpp b/src/optional.hpp index c178d59..5e1c630 100644 --- a/src/optional.hpp +++ b/src/optional.hpp @@ -1,36 +1,47 @@ +/** + * @file optional.hpp + * @author Felix Morgner (felix.morgner@gmail.com) + * @since 1.0.0 + */ + #ifndef WANDA_OPTIONAL_HPP #define WANDA_OPTIONAL_HPP #include <optional> -namespace wanda::std_ext { - -struct failable { +namespace wanda::std_ext +{ +struct failable +{ constexpr static auto success() { return failable{false}; } constexpr static auto failure() { return failable{true}; } - template<typename Handler> - constexpr auto operator ||(Handler handler) const { - if(m_failed) { + template <typename Handler> + constexpr auto operator||(Handler handler) const + { + if (m_failed) + { handler(); } } -private: - constexpr explicit failable(bool failed) : m_failed{failed} { }; + private: + constexpr explicit failable(bool failed) : m_failed{failed} {}; bool const m_failed; }; -template<typename ObjectType, typename HandlerType> -auto with(std::optional<ObjectType> && object, HandlerType handler) { - if(object) { - handler(object.value()); - return failable::success(); - } - return failable::failure(); +template <typename ObjectType, typename HandlerType> +auto with(std::optional<ObjectType> &&object, HandlerType handler) +{ + if (object) + { + handler(object.value()); + return failable::success(); + } + return failable::failure(); } -} +} // namespace wanda::std_ext #endif
\ No newline at end of file |
