diff --git a/include/sdbus-c++/Types.h b/include/sdbus-c++/Types.h index fc63dd8..bc71214 100644 --- a/include/sdbus-c++/Types.h +++ b/include/sdbus-c++/Types.h @@ -97,6 +97,9 @@ namespace sdbus { public: using std::tuple<_ValueTypes...>::tuple; + Struct(const std::tuple<_ValueTypes...>& t) + : std::tuple<_ValueTypes...>(t) {} + template auto& get() { diff --git a/test/unittests/Types_test.cpp b/test/unittests/Types_test.cpp index c37642b..f09372c 100644 --- a/test/unittests/Types_test.cpp +++ b/test/unittests/Types_test.cpp @@ -203,3 +203,12 @@ TEST(CopiesOfVariant, SerializeToAndDeserializeFromMessageSuccessfully) ASSERT_THAT(receivedVariant2.get(), Eq(value)); ASSERT_THAT(receivedVariant3.get(), Eq(value)); } + +TEST(AStruct, CreatesStructFromTuple) +{ + std::tuple value{1234, "abcd"}; + sdbus::Struct valueStruct{value}; + + ASSERT_THAT(std::get<0>(valueStruct), Eq(std::get<0>(value))); + ASSERT_THAT(std::get<1>(valueStruct), Eq(std::get<1>(value))); +}