diff --git a/dune/solvers/iterationsteps/mmgstep.hh b/dune/solvers/iterationsteps/mmgstep.hh index 0fccf3b630600e5d4c35076f292575bd2a1de89f..95a715267c90b7c57f58951b49d90d7ad8586395 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