From 2a39659d793fcde656593bbf01948bc0bd568181 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 20 Feb 2019 15:23:23 +0100 Subject: [PATCH] Add fully generic Vector and RowVector type aliases. --- Eigen/src/Core/Matrix.h | 14 +++++++++++++- test/type_alias.cpp | 7 ++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Eigen/src/Core/Matrix.h b/Eigen/src/Core/Matrix.h index e7df4a901..4b714328c 100644 --- a/Eigen/src/Core/Matrix.h +++ b/Eigen/src/Core/Matrix.h @@ -467,8 +467,10 @@ class Matrix * They follow the same pattern as above except that the scalar type suffix is replaced by a * template parameter, i.e.: * - `MatrixSize` where `Size` can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for dynamic size. - * - `MatrixXSize`and `MatrixSizeX` where `Size` can be \c 2,\c 3,\c 4 for hybrid dynamic/fixed matrices. + * - `MatrixXSize` and `MatrixSizeX` where `Size` can be \c 2,\c 3,\c 4 for hybrid dynamic/fixed matrices. * - `VectorSize` and `RowVectorSize` for column and row vectors. + * + * With \cpp11, you can also use fully generic column and row vector types: `Vector` and `RowVector`. * * \sa class Matrix */ @@ -540,6 +542,16 @@ EIGEN_MAKE_FIXED_TYPEDEFS(2) EIGEN_MAKE_FIXED_TYPEDEFS(3) EIGEN_MAKE_FIXED_TYPEDEFS(4) +/** \ingroup matrixtypedefs + * \brief \cpp11 */ +template +using Vector = Matrix; + +/** \ingroup matrixtypedefs + * \brief \cpp11 */ +template +using RowVector = Matrix; + #undef EIGEN_MAKE_TYPEDEFS #undef EIGEN_MAKE_FIXED_TYPEDEFS diff --git a/test/type_alias.cpp b/test/type_alias.cpp index f9b0efc5d..9a6616c72 100644 --- a/test/type_alias.cpp +++ b/test/type_alias.cpp @@ -29,7 +29,7 @@ EIGEN_DECLARE_TEST(type_alias) STATIC_CHECK((is_same, Vector2f>::value)); STATIC_CHECK((is_same, RowVectorXi>::value)); STATIC_CHECK((is_same, RowVector2f>::value)); - + STATIC_CHECK((is_same, ArrayXXf>::value)); STATIC_CHECK((is_same, Array33i>::value)); STATIC_CHECK((is_same, Array2Xf>::value)); @@ -37,6 +37,11 @@ EIGEN_DECLARE_TEST(type_alias) STATIC_CHECK((is_same, ArrayXd>::value)); STATIC_CHECK((is_same, Array4d>::value)); + STATIC_CHECK((is_same, Vector3f>::value)); + STATIC_CHECK((is_same, VectorXi>::value)); + STATIC_CHECK((is_same, RowVector3f>::value)); + STATIC_CHECK((is_same, RowVectorXi>::value)); + #else std::cerr << "WARNING: c++11 type aliases not tested.\n"; #endif