diff --git a/dune/common/shared_ptr.hh b/dune/common/shared_ptr.hh
index 81da175d20bb881397163f2bb207905e5aeba68a..76273fdfb4a72c1e45648887620fa5d71f0d5fff 100644
--- a/dune/common/shared_ptr.hh
+++ b/dune/common/shared_ptr.hh
@@ -186,12 +186,12 @@ namespace Dune
       /** @brief Constructor from existing Pointer with custom deleter. */
       SharedCountImpl(T* elem,const Deleter& deleter) :
         SharedCount(),
-        rep_(elem),
-        deleter_(deleter)
+        deleter_(deleter),
+        rep_(elem)
       {}
       /** @brief Copy constructor with type conversion. */
       SharedCountImpl(const SharedCountImpl& rep)
-        : SharedCount(rep), deleter_(rep.deleter_) {}
+        : SharedCount(rep), deleter_(rep.deleter_), rep_(rep.rep_) {}
       /** @brief Destructor, deletes element_type* rep_ using deleter. */
       ~SharedCountImpl()
       { deleter_(rep_); }