diff --git a/Eigen/src/Core/Array.h b/Eigen/src/Core/Array.h index 039f41a3d..a85d5084b 100644 --- a/Eigen/src/Core/Array.h +++ b/Eigen/src/Core/Array.h @@ -350,7 +350,7 @@ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex, cd) #undef EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES #undef EIGEN_MAKE_ARRAY_TYPEDEFS -#if __cplusplus>=201103L +#if EIGEN_HAS_CXX11 #define EIGEN_MAKE_TYPEDEFS(Size, SizeSuffix) \ /** \ingroup matrixtypedefs */ \ @@ -379,7 +379,7 @@ EIGEN_MAKE_FIXED_TYPEDEFS(4) #undef EIGEN_MAKE_TYPEDEFS #undef EIGEN_MAKE_FIXED_TYPEDEFS -#endif // __cplusplus>=201103L +#endif // EIGEN_HAS_CXX11 #define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \ using Eigen::Matrix##SizeSuffix##TypeSuffix; \ diff --git a/Eigen/src/Core/Matrix.h b/Eigen/src/Core/Matrix.h index ea5f7da78..83cffc8e6 100644 --- a/Eigen/src/Core/Matrix.h +++ b/Eigen/src/Core/Matrix.h @@ -499,7 +499,7 @@ EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex, cd) #undef EIGEN_MAKE_TYPEDEFS #undef EIGEN_MAKE_FIXED_TYPEDEFS -#if __cplusplus>=201103L +#if EIGEN_HAS_CXX11 #define EIGEN_MAKE_TYPEDEFS(Size, SizeSuffix) \ /** \ingroup matrixtypedefs */ \ @@ -531,7 +531,7 @@ EIGEN_MAKE_FIXED_TYPEDEFS(4) #undef EIGEN_MAKE_TYPEDEFS #undef EIGEN_MAKE_FIXED_TYPEDEFS -#endif // __cplusplus>=201103L +#endif // EIGEN_HAS_CXX11 } // end namespace Eigen diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3dbb426eb..f74e22c28 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -164,6 +164,7 @@ ei_add_test(sizeof) ei_add_test(dynalloc) ei_add_test(nomalloc) ei_add_test(first_aligned) +ei_add_test(type_alias) ei_add_test(nullary) ei_add_test(mixingtypes) ei_add_test(packetmath "-DEIGEN_FAST_MATH=1") diff --git a/test/type_alias.cpp b/test/type_alias.cpp new file mode 100644 index 000000000..f9b0efc5d --- /dev/null +++ b/test/type_alias.cpp @@ -0,0 +1,43 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// Copyright (C) 2019 Gael Guennebaud +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#include "main.h" + +EIGEN_DECLARE_TEST(type_alias) +{ + using namespace internal; + + // To warm up, some basic checks: + STATIC_CHECK((is_same >::value)); + STATIC_CHECK((is_same >::value)); + STATIC_CHECK((is_same >::value)); + +#if EIGEN_HAS_CXX11 + + STATIC_CHECK((is_same, MatrixXd>::value)); + STATIC_CHECK((is_same, MatrixXi>::value)); + STATIC_CHECK((is_same, Matrix2i>::value)); + STATIC_CHECK((is_same, Matrix2Xf>::value)); + STATIC_CHECK((is_same, MatrixX4d>::value)); + STATIC_CHECK((is_same, VectorXi>::value)); + 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)); + STATIC_CHECK((is_same, ArrayX4d>::value)); + STATIC_CHECK((is_same, ArrayXd>::value)); + STATIC_CHECK((is_same, Array4d>::value)); + +#else + std::cerr << "WARNING: c++11 type aliases not tested.\n"; +#endif +}