source/base: sourceCallback forward reference type information

Change-Id: I2006ae1a116ec9a664d0dd3b56ed5242f8dbd469
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/sdeventplus/source/base.hpp b/src/sdeventplus/source/base.hpp
index c9c7562..eeef626 100644
--- a/src/sdeventplus/source/base.hpp
+++ b/src/sdeventplus/source/base.hpp
@@ -9,6 +9,7 @@
 #include <stdplus/handle/managed.hpp>
 #include <systemd/sd-bus.h>
 #include <type_traits>
+#include <utility>
 
 namespace sdeventplus
 {
@@ -152,7 +153,7 @@
     template <typename Callback, class Source,
               const Callback& (Source::*getter)() const, typename... Args>
     static int sourceCallback(const char* name, sd_event_source*,
-                              void* userdata, Args... args)
+                              void* userdata, Args&&... args)
     {
         if (userdata == nullptr)
         {
@@ -161,7 +162,8 @@
         }
         Source* source = reinterpret_cast<Source*>(userdata);
         return internal::performCallback(name, (source->*getter)(),
-                                         std::ref(*source), args...);
+                                         std::ref(*source),
+                                         std::forward<Args>(args)...);
     }
 
   private: