utility: add merge_variants_t
This type is useful for processing D-Bus messages containing information
for multiple interfaces. For doing sdbusplus::message::message::read()
on them one needs to define an std::variant which would be a combination
of all the PropertiesVariant's involved.
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Change-Id: Idcb7b9841cc0253f2f7d5552dae540fba5ad488d
diff --git a/test/utility/type_traits.cpp b/test/utility/type_traits.cpp
index a192bdf..8526f29 100644
--- a/test/utility/type_traits.cpp
+++ b/test/utility/type_traits.cpp
@@ -1,4 +1,5 @@
#include <sdbusplus/utility/dedup_variant.hpp>
+#include <sdbusplus/utility/merge_variants.hpp>
#include <sdbusplus/utility/type_traits.hpp>
#include <type_traits>
@@ -93,4 +94,13 @@
std::variant<uint32_t, uint64_t>,
sdbusplus::utility::dedup_variant_t<uint32_t, uint64_t, size_t>>);
+// Tests for merge_variants.
+static_assert(
+ std::is_same_v<std::variant<size_t>,
+ sdbusplus::utility::merge_variants_t<std::variant<size_t>>>);
+static_assert(std::is_same_v<std::variant<char, uint32_t, uint64_t>,
+ sdbusplus::utility::merge_variants_t<
+ std::variant<char, uint32_t>,
+ std::variant<uint32_t, uint64_t, size_t>>>);
+
} // namespace