summaryrefslogtreecommitdiff
path: root/asl/types/option.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'asl/types/option.hpp')
-rw-r--r--asl/types/option.hpp20
1 files changed, 4 insertions, 16 deletions
diff --git a/asl/types/option.hpp b/asl/types/option.hpp
index 86cfca3..5cbb759 100644
--- a/asl/types/option.hpp
+++ b/asl/types/option.hpp
@@ -365,23 +365,11 @@ public:
}
}
- // @Todo(C++23) Deducing this
- constexpr T&& value() &&
+ template<typename Self>
+ constexpr auto&& value(this Self&& self)
{
- ASL_ASSERT_RELEASE(has_value());
- return ASL_MOVE(m_payload).as_init_unsafe();
- }
-
- constexpr T& value() &
- {
- ASL_ASSERT_RELEASE(has_value());
- return m_payload.as_init_unsafe();
- }
-
- constexpr const T& value() const&
- {
- ASL_ASSERT_RELEASE(has_value());
- return m_payload.as_init_unsafe();
+ ASL_ASSERT_RELEASE(self.has_value());
+ return ASL_FWD(self).m_payload.as_init_unsafe();
}
template<typename U>