diff options
author | Benoit Jacob <jacob.benoit.1@gmail.com> | 2008-03-10 17:23:11 +0000 |
---|---|---|
committer | Benoit Jacob <jacob.benoit.1@gmail.com> | 2008-03-10 17:23:11 +0000 |
commit | 01572b9f54e769a7d1bb3d5073c264a5fbc7ce42 (patch) | |
tree | ea9b9ef0469040e8b8ae0805f77d726c319dfeac /Eigen/src/Core/DiagonalMatrix.h | |
parent | 9d9d81ad71a52c33ba4db9f8a6059d435d279316 (diff) |
big change: MatrixBase only takes one template parameter "Derived", the
template parameter "Scalar" is removed. This is achieved by introducting a
template <typename Derived> struct Scalar to achieve a forward-declaration of
the Scalar typedefs.
Diffstat (limited to 'Eigen/src/Core/DiagonalMatrix.h')
-rw-r--r-- | Eigen/src/Core/DiagonalMatrix.h | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/Eigen/src/Core/DiagonalMatrix.h b/Eigen/src/Core/DiagonalMatrix.h index 90683e6bc..6b4e0b17a 100644 --- a/Eigen/src/Core/DiagonalMatrix.h +++ b/Eigen/src/Core/DiagonalMatrix.h @@ -39,16 +39,19 @@ * \sa MatrixBase::diagonal(const OtherDerived&) */ template<typename CoeffsVectorType> +struct Scalar<DiagonalMatrix<CoeffsVectorType> > +{ typedef typename Scalar<CoeffsVectorType>::Type Type; }; + +template<typename CoeffsVectorType> class DiagonalMatrix : NoOperatorEquals, - public MatrixBase<typename CoeffsVectorType::Scalar, - DiagonalMatrix<CoeffsVectorType> > + public MatrixBase<DiagonalMatrix<CoeffsVectorType> > { public: - typedef typename CoeffsVectorType::Scalar Scalar; + typedef typename Scalar<CoeffsVectorType>::Type Scalar; typedef typename CoeffsVectorType::AsArg CoeffsVecRef; - friend class MatrixBase<Scalar, DiagonalMatrix>; - friend class MatrixBase<Scalar, DiagonalMatrix>::Traits; - typedef MatrixBase<Scalar, DiagonalMatrix> Base; + friend class MatrixBase<DiagonalMatrix>; + friend class MatrixBase<DiagonalMatrix>::Traits; + typedef MatrixBase<DiagonalMatrix> Base; DiagonalMatrix(const CoeffsVecRef& coeffs) : m_coeffs(coeffs) { @@ -86,9 +89,9 @@ class DiagonalMatrix : NoOperatorEquals, * * \sa class DiagonalMatrix, isDiagonal() **/ -template<typename Scalar, typename Derived> +template<typename Derived> const DiagonalMatrix<Derived> -MatrixBase<Scalar, Derived>::asDiagonal() const +MatrixBase<Derived>::asDiagonal() const { return DiagonalMatrix<Derived>(asArg()); } @@ -101,8 +104,8 @@ MatrixBase<Scalar, Derived>::asDiagonal() const * * \sa asDiagonal() */ -template<typename Scalar, typename Derived> -bool MatrixBase<Scalar, Derived>::isDiagonal +template<typename Derived> +bool MatrixBase<Derived>::isDiagonal (typename NumTraits<Scalar>::Real prec) const { if(cols() != rows()) return false; |