summaryrefslogtreecommitdiffstats
path: root/include/ipmid/message/pack.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/ipmid/message/pack.hpp')
-rw-r--r--include/ipmid/message/pack.hpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/ipmid/message/pack.hpp b/include/ipmid/message/pack.hpp
index 104354d..b458af4 100644
--- a/include/ipmid/message/pack.hpp
+++ b/include/ipmid/message/pack.hpp
@@ -18,6 +18,7 @@
#include <array>
#include <ipmid/message/types.hpp>
#include <memory>
+#include <optional>
#include <phosphor-logging/log.hpp>
#include <tuple>
#include <utility>
@@ -165,6 +166,21 @@ struct PackSingle<std::bitset<N>>
}
};
+/** @brief Specialization of PackSingle for std::optional<T> */
+template <typename T>
+struct PackSingle<std::optional<T>>
+{
+ static int op(Payload& p, const std::optional<T>& t)
+ {
+ int ret = 0;
+ if (t)
+ {
+ ret = PackSingle<T>::op(p, *t);
+ }
+ return ret;
+ }
+};
+
/** @brief Specialization of PackSingle for std::array<T, N> */
template <typename T, size_t N>
struct PackSingle<std::array<T, N>>
OpenPOWER on IntegriCloud