diff --git a/solanaceae/util/config_model.inl b/solanaceae/util/config_model.inl index c86ccfd..a7cafce 100644 --- a/solanaceae/util/config_model.inl +++ b/solanaceae/util/config_model.inl @@ -78,6 +78,38 @@ struct CM_InternalOptional { } } + T& value_or(T& other) { + if (has_value) { + if constexpr (std::is_same_v) { + return b; + } else if constexpr (std::is_same_v) { + return i; + } else if constexpr (std::is_same_v) { + return d; + } else if constexpr (std::is_same_v) { + return s; + } + } else { + return other; + } + } + + const T& value_or(const T& other) const { + if (has_value) { + if constexpr (std::is_same_v) { + return b; + } else if constexpr (std::is_same_v) { + return i; + } else if constexpr (std::is_same_v) { + return d; + } else if constexpr (std::is_same_v) { + return s; + } + } else { + return other; + } + } + T value_or(T&& other) { if (has_value) { if constexpr (std::is_same_v) {