diff options
Diffstat (limited to 'src/components/rpc_base')
-rw-r--r-- | src/components/rpc_base/include/rpc_base/rpc_base.h | 2 | ||||
-rw-r--r-- | src/components/rpc_base/include/rpc_base/rpc_base_inl.h | 7 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/components/rpc_base/include/rpc_base/rpc_base.h b/src/components/rpc_base/include/rpc_base/rpc_base.h index 1792262a0f..019f7edc0e 100644 --- a/src/components/rpc_base/include/rpc_base/rpc_base.h +++ b/src/components/rpc_base/include/rpc_base/rpc_base.h @@ -393,6 +393,8 @@ class Optional { const T& operator*() const; T* operator->(); const T* operator->() const; + + void assign_if_valid(const Optional<T>& value); // For pointer-like 'if (optional_value)' tests // Better than operator bool because bool can be implicitly // casted to integral types diff --git a/src/components/rpc_base/include/rpc_base/rpc_base_inl.h b/src/components/rpc_base/include/rpc_base/rpc_base_inl.h index 9a59e169c2..2241a4707b 100644 --- a/src/components/rpc_base/include/rpc_base/rpc_base_inl.h +++ b/src/components/rpc_base/include/rpc_base/rpc_base_inl.h @@ -604,6 +604,13 @@ const T* Optional<T>::operator->() const { } template<typename T> +void Optional<T>::assign_if_valid(const Optional<T>& value) { + if (value.is_initialized()) { + value_ = value.value_; + } +} + +template<typename T> Optional<T>::operator const void*() const { return is_initialized() ? &value_ : NULL; } |