【发布时间】:2022-12-23 20:40:56
【问题描述】:
我正在尝试编写一些可以计算某些数据大小的通用代码。这个大小基本上是数组/元组类结构或特征矩阵中元素的数量。
我尝试了以下
template <typename T>
constexpr int getDataSize(T /*t*/)
{
return std::tuple_size_v<T>;
}
template <typename Derived>
constexpr int getDataSize(Eigen::MatrixBase<Derived> /*t*/)
{
using T = Eigen::MatrixBase<Derived>;
return T ::RowsAtCompileTime * T::ColsAtCompileTime;
}
但是编译器总是试图实例化第一个模板,当我传递一个特征矩阵时也是如此。由于 Eigen 对象不存在 tuple_size_v,因此无法编译。
https://godbolt.org/z/d6T638K1e中的示例
我如何以通用方式计算此大小?
【问题讨论】: