aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2019-02-20 15:23:23 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2019-02-20 15:23:23 +0100
commit2a39659d793fcde656593bbf01948bc0bd568181 (patch)
tree0f86aa74d93cde904498af80050e2b3eae8b1164
parent302377110a26d88a9e0bad8322324227eda2e1c4 (diff)
Add fully generic Vector<Type,Size> and RowVector<Type,Size> type aliases.
-rw-r--r--Eigen/src/Core/Matrix.h14
-rw-r--r--test/type_alias.cpp7
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<Type>` where `Size` can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for dynamic size.
- * - `MatrixXSize<Type>`and `MatrixSizeX<Type>` where `Size` can be \c 2,\c 3,\c 4 for hybrid dynamic/fixed matrices.
+ * - `MatrixXSize<Type>` and `MatrixSizeX<Type>` where `Size` can be \c 2,\c 3,\c 4 for hybrid dynamic/fixed matrices.
* - `VectorSize<Type>` and `RowVectorSize<Type>` for column and row vectors.
+ *
+ * With \cpp11, you can also use fully generic column and row vector types: `Vector<Type,Size>` and `RowVector<Type,Size>`.
*
* \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 <typename Type, int Size>
+using Vector = Matrix<Type, Size, 1>;
+
+/** \ingroup matrixtypedefs
+ * \brief \cpp11 */
+template <typename Type, int Size>
+using RowVector = Matrix<Type, 1, Size>;
+
#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<Vector2<float>, Vector2f>::value));
STATIC_CHECK((is_same<RowVectorX<int>, RowVectorXi>::value));
STATIC_CHECK((is_same<RowVector2<float>, RowVector2f>::value));
-
+
STATIC_CHECK((is_same<ArrayXX<float>, ArrayXXf>::value));
STATIC_CHECK((is_same<Array33<int>, Array33i>::value));
STATIC_CHECK((is_same<Array2X<float>, Array2Xf>::value));
@@ -37,6 +37,11 @@ EIGEN_DECLARE_TEST(type_alias)
STATIC_CHECK((is_same<ArrayX<double>, ArrayXd>::value));
STATIC_CHECK((is_same<Array4<double>, Array4d>::value));
+ STATIC_CHECK((is_same<Vector<float,3>, Vector3f>::value));
+ STATIC_CHECK((is_same<Vector<int,Dynamic>, VectorXi>::value));
+ STATIC_CHECK((is_same<RowVector<float,3>, RowVector3f>::value));
+ STATIC_CHECK((is_same<RowVector<int,Dynamic>, RowVectorXi>::value));
+
#else
std::cerr << "WARNING: c++11 type aliases not tested.\n";
#endif