Fix compilation failures on constexpr matrices with GCC 14

This commit is contained in:
Tyler Veness 2024-05-22 12:29:01 +00:00 committed by Rasmus Munk Larsen
parent 99adca8b34
commit c4d84dfddc
3 changed files with 7 additions and 2 deletions

View File

@ -621,17 +621,19 @@ class DenseBase
protected: protected:
EIGEN_DEFAULT_COPY_CONSTRUCTOR(DenseBase) EIGEN_DEFAULT_COPY_CONSTRUCTOR(DenseBase)
/** Default constructor. Do nothing. */ /** Default constructor. Do nothing. */
#ifdef EIGEN_INTERNAL_DEBUGGING
EIGEN_DEVICE_FUNC constexpr DenseBase() { EIGEN_DEVICE_FUNC constexpr DenseBase() {
/* Just checks for self-consistency of the flags. /* Just checks for self-consistency of the flags.
* Only do it when debugging Eigen, as this borders on paranoia and could slow compilation down * Only do it when debugging Eigen, as this borders on paranoia and could slow compilation down
*/ */
#ifdef EIGEN_INTERNAL_DEBUGGING
EIGEN_STATIC_ASSERT( EIGEN_STATIC_ASSERT(
(internal::check_implication(MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1, int(IsRowMajor)) && (internal::check_implication(MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1, int(IsRowMajor)) &&
internal::check_implication(MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1, int(!IsRowMajor))), internal::check_implication(MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1, int(!IsRowMajor))),
INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION) INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION)
#endif
} }
#else
EIGEN_DEVICE_FUNC constexpr DenseBase() = default;
#endif
private: private:
EIGEN_DEVICE_FUNC explicit DenseBase(int); EIGEN_DEVICE_FUNC explicit DenseBase(int);

View File

@ -7,6 +7,7 @@
// Public License v. 2.0. If a copy of the MPL was not distributed // 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/. // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
#define EIGEN_TESTING_CONSTEXPR
#include "main.h" #include "main.h"
EIGEN_DECLARE_TEST(constexpr) { EIGEN_DECLARE_TEST(constexpr) {

View File

@ -336,7 +336,9 @@ static std::vector<std::string> eigen_assert_list;
#endif // EIGEN_NO_ASSERTION_CHECKING #endif // EIGEN_NO_ASSERTION_CHECKING
#ifndef EIGEN_TESTING_CONSTEXPR
#define EIGEN_INTERNAL_DEBUGGING #define EIGEN_INTERNAL_DEBUGGING
#endif
#include <Eigen/QR> // required for createRandomPIMatrixOfRank and generateRandomMatrixSvs #include <Eigen/QR> // required for createRandomPIMatrixOfRank and generateRandomMatrixSvs
inline void verify_impl(bool condition, const char* testname, const char* file, int line, inline void verify_impl(bool condition, const char* testname, const char* file, int line,