makes SparseView a true sparse expression and fix use of nesting types
diff --git a/Eigen/src/Sparse/SparseView.h b/Eigen/src/Sparse/SparseView.h
index 56d00b3..8a04469 100644
--- a/Eigen/src/Sparse/SparseView.h
+++ b/Eigen/src/Sparse/SparseView.h
@@ -27,11 +27,16 @@
 #define EIGEN_SPARSEVIEW_H
 
 template<typename MatrixType>
-struct ei_traits<SparseView<MatrixType> > : ei_traits<MatrixType> {};
+struct ei_traits<SparseView<MatrixType> > : ei_traits<MatrixType>
+{
+  typedef int Index;
+  typedef Sparse StorageKind;
+};
 
 template<typename MatrixType>
 class SparseView : public SparseMatrixBase<SparseView<MatrixType> >
 {
+  typedef typename MatrixType::Nested MatrixTypeNested;
 public:
   EIGEN_SPARSE_PUBLIC_INTERFACE(SparseView)
 
@@ -47,18 +52,18 @@
   inline Index outerSize() const { return m_matrix.outerSize(); }
 
 protected:
-  const typename MatrixType::Nested m_matrix;
+  const MatrixTypeNested m_matrix;
   Scalar m_reference;
   typename NumTraits<Scalar>::Real m_epsilon;
 };
 
 template<typename MatrixType>
-class SparseView<MatrixType>::InnerIterator : public MatrixType::InnerIterator
+class SparseView<MatrixType>::InnerIterator : public MatrixTypeNested::InnerIterator
 {
 public:
-  typedef typename MatrixType::InnerIterator IterBase;
+  typedef typename MatrixTypeNested::InnerIterator IterBase;
   InnerIterator(const SparseView& view, Index outer) :
-  DenseBase<MatrixType>::InnerIterator(view.m_matrix, outer), m_view(view)
+  IterBase(view.m_matrix, outer), m_view(view)
   {
     incrementToNonZero();
   }