diff --git a/corsika/detail/modules/LongitudinalProfile.inl b/corsika/detail/modules/LongitudinalProfile.inl
index e2490e1147d32c701f98005cd9a95f98643f2209..4e68c8f37020f61ce26892d12002da3647c4bc30 100644
--- a/corsika/detail/modules/LongitudinalProfile.inl
+++ b/corsika/detail/modules/LongitudinalProfile.inl
@@ -14,13 +14,14 @@
 #include <cmath>
 #include <iomanip>
 #include <limits>
+#include <utility>
 
 namespace corsika {
 
   template <typename TOutput>
   template <typename... TArgs>
-  inline LongitudinalProfile<TOutput>::LongitudinalProfile(TArgs... args)
-      : TOutput(args...) {}
+  inline LongitudinalProfile<TOutput>::LongitudinalProfile(TArgs&&... args)
+      : TOutput(std::forward<TArgs>(args)...) {}
 
   template <typename TOutput>
   template <typename TParticle, typename TTrack>
diff --git a/corsika/modules/LongitudinalProfile.hpp b/corsika/modules/LongitudinalProfile.hpp
index 0c56b3c32ba5768cd2080d23b3edacde5ca1d1ac..c34ee8f2ee2361c3fec488ea4229ae28e9188f67 100644
--- a/corsika/modules/LongitudinalProfile.hpp
+++ b/corsika/modules/LongitudinalProfile.hpp
@@ -41,7 +41,7 @@ namespace corsika {
 
   public:
     template <typename... TArgs>
-    LongitudinalProfile(TArgs... args);
+    LongitudinalProfile(TArgs&&... args);
 
     template <typename TParticle, typename TTrack>
     ProcessReturn doContinuous(