diff options
author | tomsmeding <hallo@tomsmeding.nl> | 2015-05-11 18:39:56 +0200 |
---|---|---|
committer | tomsmeding <hallo@tomsmeding.nl> | 2015-05-11 18:40:08 +0200 |
commit | 82407c1c4c9526e7dc408e936478c8619ded8c66 (patch) | |
tree | b7ab24326c72e58d915ad1afec5adebef51c0689 /Maybe.h | |
parent | 6f27f2e53179f476cfb80e634a59bfd3d584db6b (diff) |
Fix up makefile and add functional insert and find implementation
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"; + } +}; |