From 5025cb8ed81b46ae3ed6e078ff4b4ce531fb59cf Mon Sep 17 00:00:00 2001
From: Jonathan Youett <youett@math.fu-berlin.de>
Date: Fri, 1 Sep 2017 11:12:47 +0200
Subject: [PATCH] Use wrap_move_share to extend the setter to l-value and
 r-values

---
 dune/solvers/iterationsteps/mmgstep.hh | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/dune/solvers/iterationsteps/mmgstep.hh b/dune/solvers/iterationsteps/mmgstep.hh
index 0fccf3b6..95a71526 100644
--- a/dune/solvers/iterationsteps/mmgstep.hh
+++ b/dune/solvers/iterationsteps/mmgstep.hh
@@ -8,6 +8,7 @@
 #include <dune/solvers/transferoperators/multigridtransfer.hh>
 
 #include <dune/solvers/common/boxconstraint.hh>
+#include <dune/solvers/common/wrapownshare.hh>
 #include <dune/solvers/transferoperators/obstaclerestrictor.hh>
 
 /** \brief The general monotone multigrid solver
@@ -59,8 +60,9 @@ public:
     void setObstacles(ObstacleVectorType* obstacles) {obstacles_ = obstacles;}
 
     //! Set the obstacle restrictor
-    void setObstacleRestrictor(std::shared_ptr<ObstacleRestrictor<VectorType> > restrictor) {
-        obstacleRestrictor_ = restrictor;
+    template <class Restrictor>
+    void setObstacleRestrictor(Restrictor&& restrictor) {
+        obstacleRestrictor_ = Dune::Solvers::wrap_own_share<ObstacleRestrictor<VectorType> >(std::forward<Restrictor>(restrictor));
     }
 
     //! Bitfield determining which fine grid nodes have an obstacle
-- 
GitLab