added support for optionals in unpackProperties

- Added support for optionals
- Added support for pointers
- Removed support for moving data from input container
- Removed support for container types other than std::vector

Tested:
- Unit tests are passing
- Examples which use unpackProperties are working correctly

Signed-off-by: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
Change-Id: I3dbd7333237a1373d784187951ad6abe217567d1
diff --git a/test/utility/type_traits.cpp b/test/utility/type_traits.cpp
index 8526f29..e5197d2 100644
--- a/test/utility/type_traits.cpp
+++ b/test/utility/type_traits.cpp
@@ -84,6 +84,20 @@
     ASSERT_THAT(has_member_contains_v<Bar>, Eq(false));
 }
 
+TEST(TypeTraits, IsOptional)
+{
+    using sdbusplus::utility::is_optional;
+    using sdbusplus::utility::is_optional_v;
+
+    ASSERT_TRUE(is_optional<std::optional<int>>::value);
+    ASSERT_TRUE(is_optional<std::optional<int>&>::value);
+    ASSERT_FALSE(is_optional<int>::value);
+
+    ASSERT_TRUE(is_optional_v<std::optional<int>>);
+    ASSERT_TRUE(is_optional_v<std::optional<int>&>);
+    ASSERT_FALSE(is_optional_v<int>);
+}
+
 // Tests for dedup_variant.
 static_assert(std::is_same_v<std::variant<size_t>,
                              sdbusplus::utility::dedup_variant_t<size_t>>);