在编译时确定 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 类矩阵类型,例如 Matrix
、Block
、Map
、Ref
等
标题基本上说明了一切。 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 类矩阵类型,例如 Matrix
、Block
、Map
、Ref
等