【发布时间】:2017-10-20 08:56:55
【问题描述】:
我正在尝试实现一个简单的 Matrix 类模板 我想像 Matrix(data1 , .. , dataN) 一样实例化它 基本上我想定义一个模板类,它将 2 unsigned int 作为模板参数,并使用初始化列表来推断现在包含的数据的类型,我写了这个简单的开始:
template<size_t N, size_t M>
class Matrix {
public:
template<typename ...T>
constexpr Matrix<N,M>(T ... args ) noexcept
: data{std::forward<T>(args)... }
{
static_assert(sizeof...(args) <= N*M, "Insufficent element for a Matrix " );
}
const auto getData()const { return data; }
private:
template<typename T>
std::valarray<T> data ;
};
但我有一个错误..
错误:数据成员“数据”不能是成员模板 std::valarray 数据;
那你怎么看?有一种方法可以推断出矩阵的类型 通过她的初始化(传递给构造函数的参数)并使用这个时间 沿着所有类定义?
【问题讨论】:
-
我不知道成员变量是否可以在 C++14 或更高版本中进行模板化,但无论如何为什么
T不是整个类的参数? -
我希望
typename T是该类的第一个(或最后一个)模板参数。 -
因为我会使用 Matrix
来实例化这些 .. 所以类模板参数应该是 ... 我可以在哪里插入 T ??推断什么?