File tree Expand file tree Collapse file tree 1 file changed +13
-3
lines changed
Expand file tree Collapse file tree 1 file changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -43,10 +43,14 @@ class Optional :
4343
4444 T & get ();
4545 const T & get () const ;
46+
47+ constexpr const T & get_or (const T &default_value) const ;
48+
4649 T & operator *();
4750 const T & operator *() const ;
51+
4852 T * operator ->();
49- T * operator ->() const ;
53+ const T * operator ->() const ;
5054
5155 std::string get_tag () const ;
5256
@@ -170,6 +174,12 @@ const T & Optional<T>::get() const
170174 return *ptr;
171175}
172176
177+ template <typename T>
178+ constexpr const T & Optional<T>::get_or(const T &default_value) const
179+ {
180+ return valid ? get () : default_value;
181+ }
182+
173183template <typename T>
174184T & Optional<T>::operator *()
175185{
@@ -183,13 +193,13 @@ const T & Optional<T>::operator*() const
183193}
184194
185195template <typename T>
186- T * Optional<T>::operator ->() const
196+ T * Optional<T>::operator ->()
187197{
188198 return &get ();
189199}
190200
191201template <typename T>
192- T * Optional<T>::operator ->()
202+ const T * Optional<T>::operator ->() const
193203{
194204 return &get ();
195205}
You can’t perform that action at this time.
0 commit comments