如何在模板编程中从现有类型修改矩阵的一些选项以创建新的矩阵类型?

  • 本文关键字:类型 选项 创建 编程 修改 c++ eigen
  • 更新时间 :
  • 英文 :


例如,假设我们有一个矩阵类型T,我们可以创建一个像Matrix<..., ..., 1 ,...>一样只有1个cols的新类型,并且在类型T中保持其他选项完全相同吗?

在这种情况下,这应该是最简单的形式:

using Matrix = Eigen::Matrix<...>; // your type
using Vector = typename Matrix::ColXpr::PlainObject;

经过一番研究,我给出了以下解决方案:

template<typename T1>
auto fun(const Eigen::MatrixBase<T1>& _X)
{
using T = typename T1::PlainObject;
using T2 = Eigen::Matrix<typename  T::Scalar,
T::RowsAtCompileTime, T::ColsAtCompileTime,
T::Options, T::MaxRowsAtCompileTime, T::MaxColsAtCompileTime>;
if constexpr (std::is_same_v<T2, T>)
{
std::cout << "True" << std::endl;
}
return T();
}

最新更新