Add fully generic Vector<Type,Size> and RowVector<Type,Size> type aliases.
diff --git a/Eigen/src/Core/Matrix.h b/Eigen/src/Core/Matrix.h index e7df4a9..4b71432 100644 --- a/Eigen/src/Core/Matrix.h +++ b/Eigen/src/Core/Matrix.h
@@ -467,8 +467,10 @@ * 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(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 f9b0efc..9a6616c 100644 --- a/test/type_alias.cpp +++ b/test/type_alias.cpp
@@ -29,7 +29,7 @@ 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 @@ 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