例如,假设我们有一个矩阵类型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();
}