aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/DiagonalMatrix.h
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2008-03-10 17:23:11 +0000
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2008-03-10 17:23:11 +0000
commit01572b9f54e769a7d1bb3d5073c264a5fbc7ce42 (patch)
treeea9b9ef0469040e8b8ae0805f77d726c319dfeac /Eigen/src/Core/DiagonalMatrix.h
parent9d9d81ad71a52c33ba4db9f8a6059d435d279316 (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.h23
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;