diff --git a/src/amdis/operations/Assigner.hpp b/src/amdis/operations/Assigner.hpp
index 920975bfde41869eeb5de5b4b79b2ed92930a49a..826b7c2c48ce1322d57313e1801ab2603448f1c0 100644
--- a/src/amdis/operations/Assigner.hpp
+++ b/src/amdis/operations/Assigner.hpp
@@ -7,7 +7,7 @@ namespace AMDiS
     struct assign
     {
       template <class T, class S>
-      constexpr void operator()(T const& from, S& to) const
+      constexpr void operator()(T const& from, S&& to) const
       {
         to = from;
       }
@@ -16,7 +16,7 @@ namespace AMDiS
     struct plus_assign
     {
       template <class T, class S>
-      constexpr void operator()(T const& from, S& to) const
+      constexpr void operator()(T const& from, S&& to) const
       {
         to += from;
       }
@@ -25,7 +25,7 @@ namespace AMDiS
     struct minus_assign
     {
       template <class T, class S>
-      constexpr void operator()(T const& from, S& to) const
+      constexpr void operator()(T const& from, S&& to) const
       {
         to -= from;
       }
@@ -34,7 +34,7 @@ namespace AMDiS
     struct multiplies_assign
     {
       template <class T, class S>
-      constexpr void operator()(T const& from, S& to) const
+      constexpr void operator()(T const& from, S&& to) const
       {
         to *= from;
       }
@@ -43,7 +43,7 @@ namespace AMDiS
     struct divides_assign
     {
       template <class T, class S>
-      constexpr void operator()(T const& from, S& to) const
+      constexpr void operator()(T const& from, S&& to) const
       {
         to /= from;
       }