diff --git a/dune/tnnmg/functionals/boxconstrainedquadraticfunctional.hh b/dune/tnnmg/functionals/boxconstrainedquadraticfunctional.hh
index ea7d85759d34507fb7a07688e629c444f23ed362..8bed37da35a0d31c74cceab8105780a0a337f71c 100644
--- a/dune/tnnmg/functionals/boxconstrainedquadraticfunctional.hh
+++ b/dune/tnnmg/functionals/boxconstrainedquadraticfunctional.hh
@@ -254,10 +254,11 @@ public:
   using LowerObstacle = std::decay_t<L>;
   using UpperObstacle = std::decay_t<U>;
 
-  BoxConstrainedQuadraticFunctional(const Matrix& matrix, const Vector& linearPart, const LowerObstacle& lower, const UpperObstacle& upper) :
-    Base(matrix, linearPart),
-    lower_(lower),
-    upper_(upper)
+  template <class MM, class VV, class LL, class UU>
+  BoxConstrainedQuadraticFunctional(MM&& matrix, VV&& linearPart, LL&& lower, UU&& upper) :
+    Base(std::forward<MM>(matrix), std::forward<VV>(linearPart)),
+    lower_(std::forward<LL>(lower)),
+    upper_(std::forward<UU>(upper))
   {}
 
   Range operator()(const Vector& v) const