sdbusplus: Fix build on GCC 8 or ealier

The code to construct sd_bus_vtables uses the designated initializer
syntax that is not supported on GCC 8 or ealier versions.

Workaround it by specific the return value type, so it compiles on
older GCC versions.

Resolves openbmc/sdbusplus#40

Tested: Verify the code builds with GCC 8.3.0 and 7.4.0;
        Verify the generated code is the same with x86-64 GCC 9.2.0
        and -Os option on https://godbolt.org/

Signed-off-by: Lei YU <mine260309@gmail.com>
Change-Id: I2496efacdb9edf7b8b7f7ad435c192bf402e8d75
diff --git a/sdbusplus/vtable.hpp b/sdbusplus/vtable.hpp
index 1a15526..c2d8ba6 100644
--- a/sdbusplus/vtable.hpp
+++ b/sdbusplus/vtable.hpp
@@ -113,19 +113,19 @@
 
 constexpr vtable_t start(decltype(vtable_t::flags) flags)
 {
-    return SD_BUS_VTABLE_START(flags);
+    return vtable_t SD_BUS_VTABLE_START(flags);
 }
 
 constexpr vtable_t end()
 {
-    return SD_BUS_VTABLE_END;
+    return vtable_t SD_BUS_VTABLE_END;
 }
 
 constexpr vtable_t method(const char* member, const char* signature,
                           const char* result, sd_bus_message_handler_t handler,
                           decltype(vtable_t::flags) flags)
 {
-    return SD_BUS_METHOD(member, signature, result, handler, flags);
+    return vtable_t SD_BUS_METHOD(member, signature, result, handler, flags);
 }
 
 constexpr vtable_t method_o(const char* member, const char* signature,
@@ -133,21 +133,21 @@
                             sd_bus_message_handler_t handler, size_t offset,
                             decltype(vtable_t::flags) flags)
 {
-    return SD_BUS_METHOD_WITH_OFFSET(member, signature, result, handler, offset,
-                                     flags);
+    return vtable_t SD_BUS_METHOD_WITH_OFFSET(member, signature, result,
+                                              handler, offset, flags);
 }
 
 constexpr vtable_t signal(const char* member, const char* signature,
                           decltype(vtable_t::flags) flags)
 {
-    return SD_BUS_SIGNAL(member, signature, flags);
+    return vtable_t SD_BUS_SIGNAL(member, signature, flags);
 }
 
 constexpr vtable_t property(const char* member, const char* signature,
                             sd_bus_property_get_t get,
                             decltype(vtable_t::flags) flags)
 {
-    return SD_BUS_PROPERTY(member, signature, get, 0, flags);
+    return vtable_t SD_BUS_PROPERTY(member, signature, get, 0, flags);
 }
 
 constexpr vtable_t property(const char* member, const char* signature,
@@ -155,21 +155,22 @@
                             sd_bus_property_set_t set,
                             decltype(vtable_t::flags) flags)
 {
-    return SD_BUS_WRITABLE_PROPERTY(member, signature, get, set, 0, flags);
+    return vtable_t SD_BUS_WRITABLE_PROPERTY(member, signature, get, set, 0,
+                                             flags);
 }
 
 constexpr vtable_t property_o(const char* member, const char* signature,
                               size_t offset, decltype(vtable_t::flags) flags)
 {
-    return SD_BUS_PROPERTY(member, signature, nullptr, offset, flags);
+    return vtable_t SD_BUS_PROPERTY(member, signature, nullptr, offset, flags);
 }
 
 constexpr vtable_t property_o(const char* member, const char* signature,
                               sd_bus_property_set_t set, size_t offset,
                               decltype(vtable_t::flags) flags)
 {
-    return SD_BUS_WRITABLE_PROPERTY(member, signature, nullptr, set, offset,
-                                    flags);
+    return vtable_t SD_BUS_WRITABLE_PROPERTY(member, signature, nullptr, set,
+                                             offset, flags);
 }
 
 } // namespace vtable