mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-21 20:34:28 +08:00
Fix up C++ version detection macros and cmake tests.
This commit is contained in:
parent
bb6675caf7
commit
dbf7ae6f9b
@ -650,11 +650,11 @@
|
|||||||
// The macro EIGEN_COMP_CXXVER defines the c++ version expected by the compiler.
|
// The macro EIGEN_COMP_CXXVER defines the c++ version expected by the compiler.
|
||||||
// For instance, if compiling with gcc and -std=c++17, then EIGEN_COMP_CXXVER
|
// For instance, if compiling with gcc and -std=c++17, then EIGEN_COMP_CXXVER
|
||||||
// is defined to 17.
|
// is defined to 17.
|
||||||
#if EIGEN_CPLUSPLUS > 201703L
|
#if EIGEN_CPLUSPLUS >= 202002L
|
||||||
#define EIGEN_COMP_CXXVER 20
|
#define EIGEN_COMP_CXXVER 20
|
||||||
#elif EIGEN_CPLUSPLUS > 201402L
|
#elif EIGEN_CPLUSPLUS >= 201703L
|
||||||
#define EIGEN_COMP_CXXVER 17
|
#define EIGEN_COMP_CXXVER 17
|
||||||
#elif EIGEN_CPLUSPLUS > 201103L
|
#elif EIGEN_CPLUSPLUS >= 201402L
|
||||||
#define EIGEN_COMP_CXXVER 14
|
#define EIGEN_COMP_CXXVER 14
|
||||||
#elif EIGEN_CPLUSPLUS >= 201103L
|
#elif EIGEN_CPLUSPLUS >= 201103L
|
||||||
#define EIGEN_COMP_CXXVER 11
|
#define EIGEN_COMP_CXXVER 11
|
||||||
|
@ -185,18 +185,7 @@ ei_add_test(io)
|
|||||||
ei_add_test(packetmath "-DEIGEN_FAST_MATH=1")
|
ei_add_test(packetmath "-DEIGEN_FAST_MATH=1")
|
||||||
ei_add_test(vectorization_logic)
|
ei_add_test(vectorization_logic)
|
||||||
ei_add_test(basicstuff)
|
ei_add_test(basicstuff)
|
||||||
ei_add_test_internal(constexpr constexpr_cxx14)
|
ei_add_test(constexpr)
|
||||||
target_compile_features(constexpr_cxx14 PRIVATE cxx_std_14)
|
|
||||||
if ("cxx_std_17" IN_LIST CMAKE_CXX_COMPILE_FEATURES)
|
|
||||||
# C++17 changes some rules related to constexpr, check that it works
|
|
||||||
ei_add_test_internal(constexpr constexpr_cxx17)
|
|
||||||
target_compile_features(constexpr_cxx17 PRIVATE cxx_std_17)
|
|
||||||
endif()
|
|
||||||
if ("cxx_std_20" IN_LIST CMAKE_CXX_COMPILE_FEATURES)
|
|
||||||
# C++20 changes some rules related to constexpr, check that it works
|
|
||||||
ei_add_test_internal(constexpr constexpr_cxx20)
|
|
||||||
target_compile_features(constexpr_cxx20 PRIVATE cxx_std_20)
|
|
||||||
endif()
|
|
||||||
ei_add_test(constructor)
|
ei_add_test(constructor)
|
||||||
ei_add_test(linearstructure)
|
ei_add_test(linearstructure)
|
||||||
ei_add_test(integer_types)
|
ei_add_test(integer_types)
|
||||||
|
@ -15,7 +15,7 @@ EIGEN_DECLARE_TEST(constexpr) {
|
|||||||
// until after the constructor returns:
|
// until after the constructor returns:
|
||||||
// error: member ‘Eigen::internal::plain_array<int, 9, 0, 0>::array’ must be initialized by mem-initializer in
|
// error: member ‘Eigen::internal::plain_array<int, 9, 0, 0>::array’ must be initialized by mem-initializer in
|
||||||
// ‘constexpr’ constructor
|
// ‘constexpr’ constructor
|
||||||
#if EIGEN_COMP_CXXVER >= 20 || defined(__clang__)
|
#if EIGEN_COMP_CXXVER >= 20
|
||||||
constexpr Matrix3i mat({{1, 2, 3}, {4, 5, 6}, {7, 8, 9}});
|
constexpr Matrix3i mat({{1, 2, 3}, {4, 5, 6}, {7, 8, 9}});
|
||||||
VERIFY_IS_EQUAL(mat.size(), 9);
|
VERIFY_IS_EQUAL(mat.size(), 9);
|
||||||
VERIFY_IS_EQUAL(mat(0, 0), 1);
|
VERIFY_IS_EQUAL(mat(0, 0), 1);
|
||||||
@ -35,7 +35,7 @@ EIGEN_DECLARE_TEST(constexpr) {
|
|||||||
VERIFY_IS_EQUAL(dyn_arr(0, 0), 1);
|
VERIFY_IS_EQUAL(dyn_arr(0, 0), 1);
|
||||||
VERIFY_IS_EQUAL(dyn_arr.size(), 9);
|
VERIFY_IS_EQUAL(dyn_arr.size(), 9);
|
||||||
static_assert(dyn_arr.coeff(0,1) == 2);
|
static_assert(dyn_arr.coeff(0,1) == 2);
|
||||||
#endif // EIGEN_COMP_CXXVER >= 20 || defined(__clang__)
|
#endif // EIGEN_COMP_CXXVER >= 20
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that we can use the std::initializer_list constructor for constexpr variables.
|
// Check that we can use the std::initializer_list constructor for constexpr variables.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user