mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-23 01:59:38 +08:00
restrict operator[] to vectors, not matrices.
This commit is contained in:
parent
28dde19e40
commit
f22ade8ee4
@ -164,6 +164,8 @@ template<typename Derived>
|
|||||||
EIGEN_STRONG_INLINE const typename DenseBase<Derived>::CoeffReturnType DenseBase<Derived>
|
EIGEN_STRONG_INLINE const typename DenseBase<Derived>::CoeffReturnType DenseBase<Derived>
|
||||||
::operator[](int index) const
|
::operator[](int index) const
|
||||||
{
|
{
|
||||||
|
EIGEN_STATIC_ASSERT(Derived::IsVectorAtCompileTime,
|
||||||
|
THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD)
|
||||||
ei_assert(index >= 0 && index < size());
|
ei_assert(index >= 0 && index < size());
|
||||||
return derived().coeff(index);
|
return derived().coeff(index);
|
||||||
}
|
}
|
||||||
@ -217,6 +219,8 @@ template<typename Derived>
|
|||||||
EIGEN_STRONG_INLINE typename ei_traits<Derived>::Scalar& DenseBase<Derived>
|
EIGEN_STRONG_INLINE typename ei_traits<Derived>::Scalar& DenseBase<Derived>
|
||||||
::operator[](int index)
|
::operator[](int index)
|
||||||
{
|
{
|
||||||
|
EIGEN_STATIC_ASSERT(Derived::IsVectorAtCompileTime,
|
||||||
|
THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD)
|
||||||
ei_assert(index >= 0 && index < size());
|
ei_assert(index >= 0 && index < size());
|
||||||
return derived().coeffRef(index);
|
return derived().coeffRef(index);
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,8 @@
|
|||||||
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,
|
||||||
THIS_METHOD_IS_ONLY_FOR_EXPRESSIONS_WITH_DIRECT_MEMORY_ACCESS_SUCH_AS_MAP_OR_PLAIN_MATRICES,
|
THIS_METHOD_IS_ONLY_FOR_EXPRESSIONS_WITH_DIRECT_MEMORY_ACCESS_SUCH_AS_MAP_OR_PLAIN_MATRICES,
|
||||||
YOU_ALREADY_SPECIFIED_THIS_STRIDE,
|
YOU_ALREADY_SPECIFIED_THIS_STRIDE,
|
||||||
INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION
|
INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION,
|
||||||
|
THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
// License and a copy of the GNU General Public License along with
|
// License and a copy of the GNU General Public License along with
|
||||||
// Eigen. If not, see <http://www.gnu.org/licenses/>.
|
// Eigen. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#define EIGEN_NO_STATIC_ASSERT
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
template<typename MatrixType> void basicStuff(const MatrixType& m)
|
template<typename MatrixType> void basicStuff(const MatrixType& m)
|
||||||
@ -96,6 +98,12 @@ template<typename MatrixType> void basicStuff(const MatrixType& m)
|
|||||||
VERIFY_RAISES_ASSERT(m1 = (m2.block(0,0, rows-1, cols-1)));
|
VERIFY_RAISES_ASSERT(m1 = (m2.block(0,0, rows-1, cols-1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(cols!=1 && rows!=1)
|
||||||
|
{
|
||||||
|
VERIFY_RAISES_ASSERT(m1[0]);
|
||||||
|
VERIFY_RAISES_ASSERT((m1+m1)[0]);
|
||||||
|
}
|
||||||
|
|
||||||
VERIFY_IS_APPROX(m3 = m1,m1);
|
VERIFY_IS_APPROX(m3 = m1,m1);
|
||||||
MatrixType m4;
|
MatrixType m4;
|
||||||
VERIFY_IS_APPROX(m4 = m1,m1);
|
VERIFY_IS_APPROX(m4 = m1,m1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user