mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-22 09:39:34 +08:00
* default MatrixBase ctor: make it protected, make it a static assert, only do the check when debugging eigen to avoid slowing down compilation for everybody (this check is paranoiac, it's very seldom useful)
* add private MatrixBase ctors to catch cases when the user tries to construct MatrixBase objects directly
This commit is contained in:
parent
ec70f8006b
commit
48261fc773
@ -145,12 +145,6 @@ template<typename Derived> class MatrixBase
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Default constructor. Just checks at compile-time for self-consistency of the flags. */
|
|
||||||
MatrixBase()
|
|
||||||
{
|
|
||||||
ei_assert(ei_are_flags_consistent<Flags>::ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
||||||
/** This is the "real scalar" type; if the \a Scalar type is already real numbers
|
/** This is the "real scalar" type; if the \a Scalar type is already real numbers
|
||||||
* (e.g. int, float or double) then \a RealScalar is just the same as \a Scalar. If
|
* (e.g. int, float or double) then \a RealScalar is just the same as \a Scalar. If
|
||||||
@ -802,6 +796,24 @@ template<typename Derived> class MatrixBase
|
|||||||
#ifdef EIGEN_MATRIXBASE_PLUGIN
|
#ifdef EIGEN_MATRIXBASE_PLUGIN
|
||||||
#include EIGEN_MATRIXBASE_PLUGIN
|
#include EIGEN_MATRIXBASE_PLUGIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/** Default constructor. Do nothing. */
|
||||||
|
MatrixBase()
|
||||||
|
{
|
||||||
|
/* Just checks for self-consistency of the flags.
|
||||||
|
* Only do it when debugging Eigen, as this borders on paranoiac and could slow compilation down
|
||||||
|
*/
|
||||||
|
#ifdef EIGEN_INTERNAL_DEBUGGING
|
||||||
|
EIGEN_STATIC_ASSERT(ei_are_flags_consistent<Flags>::ret,
|
||||||
|
INVALID_MATRIXBASE_TEMPLATE_PARAMETERS)
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
explicit MatrixBase(int);
|
||||||
|
MatrixBase(int,int);
|
||||||
|
template<typename OtherDerived> explicit MatrixBase(const MatrixBase<OtherDerived>&);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // EIGEN_MATRIXBASE_H
|
#endif // EIGEN_MATRIXBASE_H
|
||||||
|
@ -76,6 +76,7 @@
|
|||||||
THIS_METHOD_IS_ONLY_FOR_COLUMN_MAJOR_MATRICES,
|
THIS_METHOD_IS_ONLY_FOR_COLUMN_MAJOR_MATRICES,
|
||||||
THIS_METHOD_IS_ONLY_FOR_ROW_MAJOR_MATRICES,
|
THIS_METHOD_IS_ONLY_FOR_ROW_MAJOR_MATRICES,
|
||||||
INVALID_MATRIX_TEMPLATE_PARAMETERS,
|
INVALID_MATRIX_TEMPLATE_PARAMETERS,
|
||||||
|
INVALID_MATRIXBASE_TEMPLATE_PARAMETERS,
|
||||||
BOTH_MATRICES_MUST_HAVE_THE_SAME_STORAGE_ORDER,
|
BOTH_MATRICES_MUST_HAVE_THE_SAME_STORAGE_ORDER,
|
||||||
THIS_METHOD_IS_ONLY_FOR_DIAGONAL_MATRIX,
|
THIS_METHOD_IS_ONLY_FOR_DIAGONAL_MATRIX,
|
||||||
THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE,
|
THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// This file is part of Eigen, a lightweight C++ template library
|
// // This file is part of Eigen, a lightweight C++ template library
|
||||||
// for linear algebra.
|
// for linear algebra.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
|
// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user