more valueor variants
This commit is contained in:
parent
390b123fb7
commit
d304d719e9
@ -78,6 +78,38 @@ struct CM_InternalOptional {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
T& value_or(T& other) {
|
||||||
|
if (has_value) {
|
||||||
|
if constexpr (std::is_same_v<T, bool>) {
|
||||||
|
return b;
|
||||||
|
} else if constexpr (std::is_same_v<T, int64_t>) {
|
||||||
|
return i;
|
||||||
|
} else if constexpr (std::is_same_v<T, double>) {
|
||||||
|
return d;
|
||||||
|
} else if constexpr (std::is_same_v<T, CM_InternalStringView>) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return other;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const T& value_or(const T& other) const {
|
||||||
|
if (has_value) {
|
||||||
|
if constexpr (std::is_same_v<T, bool>) {
|
||||||
|
return b;
|
||||||
|
} else if constexpr (std::is_same_v<T, int64_t>) {
|
||||||
|
return i;
|
||||||
|
} else if constexpr (std::is_same_v<T, double>) {
|
||||||
|
return d;
|
||||||
|
} else if constexpr (std::is_same_v<T, CM_InternalStringView>) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return other;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
T value_or(T&& other) {
|
T value_or(T&& other) {
|
||||||
if (has_value) {
|
if (has_value) {
|
||||||
if constexpr (std::is_same_v<T, bool>) {
|
if constexpr (std::is_same_v<T, bool>) {
|
||||||
|
Loading…
Reference in New Issue
Block a user