diff options
-rw-r--r-- | icetray/icetray/icecube.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/icetray/icetray/icecube.h b/icetray/icetray/icecube.h index f2a3454..13c0545 100644 --- a/icetray/icetray/icecube.h +++ b/icetray/icetray/icecube.h @@ -26,20 +26,20 @@ namespace IceTray { public: template<typename T, typename I, typename ... Args> - static auto addObject(const Ice::ObjectAdapterPtr & adp, const std::string & name, const Args & ... args) + static auto addObject(const Ice::ObjectAdapterPtr & adp, const std::string & name, Args && ... args) { static_assert(std::is_convertible<I *, T *>::value); static_assert(std::is_convertible<I *, Ice::Object *>::value); - auto prx = adp->add(std::make_shared<I>(args...), Ice::stringToIdentity(name)); + auto prx = adp->add(std::make_shared<I>(std::forward<Args>(args)...), Ice::stringToIdentity(name)); return pm()->add<CubePlugIn>(std::make_shared<CubeObject>(prx), typeid(typename T::ProxyType).name(), __FILE__, __LINE__); } template<typename T, typename I, typename ... Args> - static auto add(const Args & ... args) + static auto add(Args && ... args) { static_assert(std::is_convertible<CubePlugInOf<I> *, T *>::value); - return pm()->add<CubePlugIn>(std::make_shared<CubePlugInOf<I>>(args...), typeid(T).name(), __FILE__, __LINE__); + return pm()->add<CubePlugIn>(std::make_shared<CubePlugInOf<I>>(std::forward<Args>(args)...), typeid(T).name(), __FILE__, __LINE__); } template<typename T> |