Je suis en train d'implémenter un simple modèle de classe Matrix Je voudrais l'instancier comme Matrix (data1, .., dataN) Fondamentalement, je pensais définir un template template qui prenait les 2 unsigned int comme paramètre de modèle, et en utilisant la liste d'initialisation pour en déduire le type de données contenant je en ce moment écrit ce simple début:Modèle matriciel du modèle
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 ;
};
mais je suis une erreur ..
error: data member ‘data’ cannot be a member template std::valarray data ;
alors qu'est-ce que vous Penser à ? il existe un moyen de déduire le type de la matrice par son initialisation (paramètre passé au constructeur) et utiliser cette fois le long de toute définition de classe?
Je ne sais pas si les variables membres peuvent être modélisées en C++ 14 ou au-delà, mais de toute façon pourquoi 'T' n'est pas un paramètre pour toute la classe? – user463035818
Je m'attendrais à ce que 'typename T' soit le premier (ou le dernier) template template de la classe. – grek40
parce que j'utiliserais la matrice pour instancier ces .. donc le paramètre de template de classe devrait être ... où je peux insérer le T ?? déduire quoi? –