Skip to content

Commit becb967

Browse files
authored
Merge pull request #58 from timohl/master
Added get_or to optional + bugfix of operator->
2 parents b4bcff9 + 3115dc7 commit becb967

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

include/fast-lib/optional.hpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff 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+
173183
template<typename T>
174184
T & Optional<T>::operator*()
175185
{
@@ -183,13 +193,13 @@ const T & Optional<T>::operator*() const
183193
}
184194

185195
template<typename T>
186-
T * Optional<T>::operator->() const
196+
T * Optional<T>::operator->()
187197
{
188198
return &get();
189199
}
190200

191201
template<typename T>
192-
T * Optional<T>::operator->()
202+
const T * Optional<T>::operator->() const
193203
{
194204
return &get();
195205
}

0 commit comments

Comments
 (0)