Loading...
Searching...
No Matches
tmay.inl
1#pragma once
2
4#include "indep/helper/tmedium.inl"
6
7namespace by {
8
9#define ME tmay<T>
10#define TEMPLATE template <typename T>
11
12 TEMPLATE
13 ME::tmay(const T& value): super(value) {}
14
15 TEMPLATE
16 ME::tmay(const tmedium<T>& it): super() {
17 if(it) set(*it);
18 }
19
20 TEMPLATE
21 ME::operator T&() { return *get(); }
22
23 TEMPLATE
24 ME::operator const T&() const { return *get(); }
25
26 TEMPLATE
27 T* ME::operator->() { return get(); }
28
29 TEMPLATE
30 T& ME::operator*() { return *get(); }
31
32 TEMPLATE
33 ME::operator nbool() const { return has(); }
34
35 TEMPLATE
36 nbool ME::has() const { return this->has_value(); }
37
38 TEMPLATE
39 T* ME::get() { return has() ? &this->value() : nullptr; }
40
41 TEMPLATE
42 void ME::rel() { this->reset(); }
43
44 TEMPLATE
45 void ME::set(const T& args) { this->emplace(args); }
46
47#undef TEMPLATE
48#undef ME
49} // namespace by