diff options
Diffstat (limited to 'Maybe.h')
-rw-r--r-- | Maybe.h | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -0,0 +1,21 @@ +#pragma once + +template <typename T> +class Maybe{ + typedef struct { + T v; + } t_v_wrapper; + + bool is_something; + t_v_wrapper *wr; +public: + Maybe(void):is_something(false),wr(nullptr){} + Maybe(const T &_v):is_something(true),wr(new t_v_wrapper({_v})){} + + operator bool() const{return this->is_something;} + + T value(void){ + if(is_something)return wr->v; + throw "Nothing"; + } +}; |