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
