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