aboutsummaryrefslogtreecommitdiff
path: root/Maybe.h
diff options
context:
space:
mode:
authortomsmeding <hallo@tomsmeding.nl>2015-05-11 18:39:56 +0200
committertomsmeding <hallo@tomsmeding.nl>2015-05-11 18:40:08 +0200
commit82407c1c4c9526e7dc408e936478c8619ded8c66 (patch)
treeb7ab24326c72e58d915ad1afec5adebef51c0689 /Maybe.h
parent6f27f2e53179f476cfb80e634a59bfd3d584db6b (diff)
Fix up makefile and add functional insert and find implementation
Diffstat (limited to 'Maybe.h')
-rw-r--r--Maybe.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/Maybe.h b/Maybe.h
new file mode 100644
index 0000000..df12478
--- /dev/null
+++ b/Maybe.h
@@ -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";
+ }
+};