diff options
Diffstat (limited to 'src/optional.hh')
| -rw-r--r-- | src/optional.hh | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/optional.hh b/src/optional.hh index 8531042e..e9386fa8 100644 --- a/src/optional.hh +++ b/src/optional.hh @@ -68,12 +68,20 @@ public: return m_value; } - T& operator*() + T& operator*() & { kak_assert(m_valid); return m_value; } - const T& operator*() const { return *const_cast<Optional&>(*this); } + + T&& operator*() && + { + kak_assert(m_valid); + return std::move(m_value); + } + + const T& operator*() const & { return *const_cast<Optional&>(*this); } + const T& operator*() const && { return *const_cast<Optional&>(*this); } T* operator->() { |
