在编译时确定 Eigen3 矩阵的存储顺序

Determine the storage order of an Eigen3 matrix at compile time

标题基本上说明了一切。 Eigen::Matrix 中是否有某些成员在编译时公开了存储顺序(列优先或行优先)?我知道 Options 模板参数用于指定存储顺序,但之后我还没有找到提取它的方法。使用场景类似于

template<class Mat>
class C {
  static_assert(/* Mat has column major format */, "column major required");
  // ...
};

您可以使用 Mat::IsRowMajor:

static_assert(!Mat::IsRowMajor, "column major required");

这适用于 Mat 的任何 Eigen 类矩阵类型,例如 MatrixBlockMapRef