私は単純な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 ;
};
が、私はエラーを得た。..
error: data member ‘data’ cannot be a member template std::valarray data ;
は、あなたが何をすべきか:テンプレートパラメータ、および今、私はこの単純なスタートを書い含むデータの種類を推定する初期化リストを使用するなど、について考える ?彼女の初期化(コンストラクタに渡されるパラメータ)によって行列 の型を推測し、この時間をすべてのクラス定義に沿って を使用する方法がありますか?
メンバ変数がC++ 14以降でテンプレート化できるかどうかわかりませんが、どうして 'T'はクラス全体のパラメータではないのですか? – user463035818
'typename T'がクラスの最初の(または最後の)テンプレート引数になると思います。 – grek40
私はこれらのインスタンス化のためにを使用するので、クラステンプレートパラメータはにする必要があります。どこにT ??を挿入できますか?何を推測する? –