From 17a6d11b793a67c254e368c66aaecd33608378ee Mon Sep 17 00:00:00 2001
From: Lasse Hinrichsen <lh1887@mi.fu-berlin.de>
Date: Thu, 5 Apr 2018 16:42:43 +0200
Subject: [PATCH] [variant] forward, not move

---
 dune/subgrid/common/variant.hh | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/dune/subgrid/common/variant.hh b/dune/subgrid/common/variant.hh
index e2132ea..484e5fe 100644
--- a/dune/subgrid/common/variant.hh
+++ b/dune/subgrid/common/variant.hh
@@ -125,10 +125,11 @@ namespace Impl {
     }
 
     template<typename Tp>
-    void set(Tp obj) {
-      Dune::Hybrid::ifElse(std::is_same<Tp, Head_>(),
-        [&](auto&& id)    { head_=std::move(id(obj)); },
-        [&](auto&& id) { return id(tail_).set(std::move(obj)); }
+    void set(Tp&& obj) {
+      using T = std::decay_t<Tp>;
+      Dune::Hybrid::ifElse(std::is_same<T, Head_>(),
+        [&](auto&& id)    { id(head_)=std::forward<Tp>(obj); },
+        [&](auto&& id) { return id(tail_).set(std::forward<Tp>(obj)); }
       );
     }
 
-- 
GitLab