mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
make shameless use of const_cast to reduce code redundancy. This means Eigen2
gives up enforcing constness. I really tried to enforce it, but it really was much hassle because our expression templates can be lvalues (not only rvalues) and so much code had to be written twice.
This commit is contained in:
@@ -31,7 +31,7 @@ template<typename MatrixType> class Conjugate
|
||||
{
|
||||
public:
|
||||
typedef typename MatrixType::Scalar Scalar;
|
||||
typedef typename MatrixType::ConstRef MatRef;
|
||||
typedef typename MatrixType::Ref MatRef;
|
||||
friend class Object<Scalar, Conjugate<MatrixType> >;
|
||||
|
||||
static const int RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
||||
@@ -45,8 +45,7 @@ template<typename MatrixType> class Conjugate
|
||||
EI_INHERIT_ASSIGNMENT_OPERATORS(Conjugate)
|
||||
|
||||
private:
|
||||
Conjugate& _ref() { return *this; }
|
||||
const Conjugate& _constRef() const { return *this; }
|
||||
const Conjugate& _ref() const { return *this; }
|
||||
int _rows() const { return m_matrix.rows(); }
|
||||
int _cols() const { return m_matrix.cols(); }
|
||||
|
||||
@@ -63,7 +62,7 @@ template<typename Scalar, typename Derived>
|
||||
Conjugate<Derived>
|
||||
Object<Scalar, Derived>::conjugate() const
|
||||
{
|
||||
return Conjugate<Derived>(static_cast<const Derived*>(this)->constRef());
|
||||
return Conjugate<Derived>(static_cast<const Derived*>(this)->ref());
|
||||
}
|
||||
|
||||
#endif // EI_CONJUGATE_H
|
||||
|
||||
Reference in New Issue
Block a user