20 static_assert (std::is_default_constructible<T>::value,
"Type T must be default constructible");
31 explicit operator bool ()
const;
33 const T* operator-> ()
const;
36 const T& operator* ()
const&;
40 const T& value ()
const;
44 std::pair<bool, T> _value;
56 inline Optional<T>::Optional (T&& v)
57 : _value {
true, std::move (v)}
63 inline Optional<T>::Optional (
const T& v)
70 inline Optional<T>::Optional ()
77 inline Optional<T>::operator bool ()
const 84 inline const T* Optional<T>::operator-> ()
const 91 inline T* Optional<T>::operator-> ()
93 return &_value.second;
98 inline const T& Optional<T>::operator* () const&
100 return _value.second;
104 template <
typename T>
105 inline T& Optional<T>::operator* () &
107 return _value.second;
111 template <
typename T>
112 inline T&& Optional<T>::value ()
114 assert (_value.first);
115 return std::move (_value.second);
119 template <
typename T>
120 inline const T& Optional<T>::value ()
const 122 assert (_value.first);
123 return _value.second;
127 template <
typename T>
128 inline void Optional<T>::reset ()
130 _value.first =
false;
Definition: customcontrols.cpp:8
Definition: optional.h:18