Files
eigen/failtest/structured_bindings_rowmajor.cpp
T

18 lines
595 B
C++

#include "../Eigen/Core"
// Reproduces the "storage-order footgun" on !2336: get<I>() uses coeffRef(Index),
// which is linear in storage order, so a RowMajor matrix would silently flip
// decomposition order vs. the column-major default. We static_assert against
// RowMajor until the semantics are agreed upon — this failtest guards that.
#ifdef EIGEN_SHOULD_FAIL_TO_BUILD
#define STORAGE_ORDER Eigen::RowMajor
#else
#define STORAGE_ORDER Eigen::ColMajor
#endif
int main() {
Eigen::Matrix<double, 2, 2, STORAGE_ORDER> m;
m << 1, 2, 3, 4;
return static_cast<int>(Eigen::get<0>(m));
}