Attempt to fix MatrixExponential/Function related warnings.
diff --git a/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h b/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h
index a4d8277..2998092 100644
--- a/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h
+++ b/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h
@@ -132,7 +132,7 @@
     typedef typename NumTraits<Scalar>::Real RealScalar;
 
     /** \brief Reference to matrix whose exponential is to be computed. */
-    const MatrixType& m_M;
+    const typename ei_nested<MatrixType>::type m_M;
 
     /** \brief Even-degree terms in numerator of Pad&eacute; approximant. */
     MatrixType m_U;
@@ -313,7 +313,7 @@
     template <typename ResultType>
     inline void evalTo(ResultType& result) const
     {
-      const typename ei_eval<Derived>::type srcEvaluated = m_src.eval();
+      const typename Derived::PlainObject srcEvaluated = m_src.eval();
       MatrixExponential<typename Derived::PlainObject> me(srcEvaluated);
       me.compute(result);
     }
diff --git a/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h b/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h
index 9944675..17040c5 100644
--- a/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h
+++ b/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h
@@ -117,7 +117,7 @@
     }
 
   private:
-    const MatrixType& m_A; /**< \brief Reference to argument of matrix function. */
+    const typename ei_nested<MatrixType>::type m_A; /**< \brief Reference to argument of matrix function. */
     StemFunction *m_f; /**< \brief Stem function for matrix function under consideration */    
 
     MatrixFunction& operator=(const MatrixFunction&);
@@ -167,7 +167,7 @@
     void computeOffDiagonal();
     DynMatrixType solveTriangularSylvester(const DynMatrixType& A, const DynMatrixType& B, const DynMatrixType& C);
 
-    const MatrixType& m_A; /**< \brief Reference to argument of matrix function. */
+    const typename ei_nested<MatrixType>::type m_A; /**< \brief Reference to argument of matrix function. */
     StemFunction *m_f; /**< \brief Stem function for matrix function under consideration */
     MatrixType m_T; /**< \brief Triangular part of Schur decomposition */
     MatrixType m_U; /**< \brief Unitary part of Schur decomposition */
@@ -520,7 +520,7 @@
     template <typename ResultType>
     inline void evalTo(ResultType& result) const
     {
-      const typename ei_eval<Derived>::type Aevaluated = m_A.eval();
+      const typename Derived::PlainObject Aevaluated = m_A.eval();
       MatrixFunction<typename Derived::PlainObject> mf(Aevaluated, m_f);
       mf.compute(result);
     }
@@ -529,7 +529,7 @@
     Index cols() const { return m_A.cols(); }
 
   private:
-    const Derived& m_A;
+    const typename ei_nested<Derived>::type m_A;
     StemFunction *m_f;
 
     MatrixFunctionReturnValue& operator=(const MatrixFunctionReturnValue&);