summaryrefslogtreecommitdiff
path: root/AK/Optional.h
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-08-08 18:34:59 +0200
committerAndreas Kling <awesomekling@gmail.com>2019-08-08 18:34:59 +0200
commit865a1b913ccbb3ef9cc23f78491c8e036d3ddbba (patch)
treedd2927ddbc116ddf7ed40baeb507e12f0b375463 /AK/Optional.h
parent533b5c0adca1b7d15c807d167dee9ff6accc8a5b (diff)
downloadserenity-865a1b913ccbb3ef9cc23f78491c8e036d3ddbba.zip
AK: Add Optional<T>(const U&)
This replaces Optional<T>(U&&) which clang-tidy complained may hide the regular copy and move constructors. That's a good point, clang-tidy, and I appreciate you pointing that out!
Diffstat (limited to 'AK/Optional.h')
-rw-r--r--AK/Optional.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/AK/Optional.h b/AK/Optional.h
index c9241e602f..589cc9b646 100644
--- a/AK/Optional.h
+++ b/AK/Optional.h
@@ -10,15 +10,22 @@ public:
Optional() {}
RETURN_TYPESTATE(unknown)
- Optional(T&& value)
+ Optional(const T& value)
: m_has_value(true)
{
- new (&m_storage) T(move(value));
+ new (&m_storage) T(value);
}
template<typename U>
RETURN_TYPESTATE(unknown)
- Optional(U&& value)
+ Optional(const U& value)
+ : m_has_value(true)
+ {
+ new (&m_storage) T(value);
+ }
+
+ RETURN_TYPESTATE(unknown)
+ Optional(T&& value)
: m_has_value(true)
{
new (&m_storage) T(move(value));