bla sandbox/mbloch/szablonowe_rozwiazanie
authorMichal Bloch <m.bloch@samsung.com>
Thu, 7 Apr 2022 11:22:32 +0000 (13:22 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Thu, 7 Apr 2022 11:26:03 +0000 (13:26 +0200)
Change-Id: I1bed498ac49511d1c7ad726ca81ea094bd248922
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
sessiond/src/tuple_g_variant_helpers.hpp

index 998a2f3..70bf8c1 100644 (file)
@@ -48,20 +48,24 @@ inline char type_of_g_variant_one<uint64_t>()
 }
 
 template <typename T>
-std::string type_of_g_variant()
+constexpr static std::string concat_gvariant_types ()
 {
-       return std::string("(") + type_of_g_variant_one<T>() + ')';
+       return std::string (1, type_of_g_variant_one<T> ());
 }
 
-template <typename T, typename T1, typename... Ts>
-std::string type_of_g_variant()
+template <typename T1, typename T2, typename ... Ts>
+constexpr static std::string concat_gvariant_types ()
 {
-       auto ret = type_of_g_variant<T1, Ts...>();
-       ret[0] = type_of_g_variant_one<T>();
-       ret.insert(0, "(");
-       return ret;
+       return std::string (1, type_of_g_variant_one <T1> ()) + concat_gvariant_types <T2, Ts ...> ();
 }
 
+template <typename ... Ts>
+constexpr std::string type_of_g_variant ()
+{
+       return std::string ("(") + concat_gvariant_types <Ts ...> () + ")";
+}
+
+
 template <size_t I, typename T>
 std::tuple<T> tuple_from_g_variant_inner(GVariant *variant)
 {