additional move support for Nullable and Optional

This commit is contained in:
Günter Obiltschnig
2020-01-15 09:35:59 +01:00
parent 8669839833
commit a31877372e
2 changed files with 52 additions and 10 deletions

View File

@@ -82,6 +82,14 @@ public:
{ {
} }
Nullable(C&& value):
/// Creates a Nullable by moving the given value.
_value(value),
_isNull(false),
_null()
{
}
Nullable(const Nullable& other): Nullable(const Nullable& other):
/// Creates a Nullable by copying another one. /// Creates a Nullable by copying another one.
_value(other._value), _value(other._value),
@@ -112,6 +120,14 @@ public:
return *this; return *this;
} }
Nullable& assign(C&& value)
/// Assigns a value to the Nullable.
{
_value = value;
_isNull = false;
return *this;
}
Nullable& assign(const Nullable& other) Nullable& assign(const Nullable& other)
/// Assigns another Nullable. /// Assigns another Nullable.
{ {
@@ -133,6 +149,12 @@ public:
return assign(value); return assign(value);
} }
Nullable& operator = (C&& value)
/// Move-assigns a value to the Nullable.
{
return assign(value);
}
Nullable& operator = (const Nullable& other) Nullable& operator = (const Nullable& other)
/// Assigns another Nullable. /// Assigns another Nullable.
{ {

View File

@@ -67,6 +67,13 @@ public:
{ {
} }
Optional(C&& value):
/// Creates a Optional by moving the given value.
_value(value),
_isSpecified(true)
{
}
Optional(const Optional& other): Optional(const Optional& other):
/// Creates a Optional by copying another one. /// Creates a Optional by copying another one.
_value(other._value), _value(other._value),
@@ -95,6 +102,14 @@ public:
return *this; return *this;
} }
Optional& assign(C&& value)
/// Moves a value into the Optional.
{
_value = value;
_isSpecified = true;
return *this;
}
Optional& assign(const Optional& other) Optional& assign(const Optional& other)
/// Assigns another Optional. /// Assigns another Optional.
{ {
@@ -108,6 +123,11 @@ public:
return assign(value); return assign(value);
} }
Optional& operator = (C&& value)
{
return assign(value);
}
Optional& operator = (const Optional& other) Optional& operator = (const Optional& other)
{ {
return assign(other); return assign(other);