Typedef de modèle C : création d'un vecteur en tant que matrice spécialisée
Définir un typedef pour créer un vecteur équivalent à une matrice avec des dimensions spécifiées peut être un défi. Explorons une solution :
Considérons un modèle de classe Matrix
L'utilisation de mécanismes de typedef traditionnels tels que :
typedef Matrix<N, 1> Vector<N>;
entraînera une erreur de compilation. Au lieu de cela, C 11 introduit des déclarations d'alias qui autorisent les modèles :
template <size_t N> using Vector = Matrix<N, 1>;
Avec cette déclaration, le type Vector<3> sera équivalent à Matrix<3, 1>.
En C 03, une approximation était possible grâce à des typedefs imbriqués :
template <size_t N> struct Vector { typedef Matrix<N, 1> type; };
Ici, Vector<3>::type serait équivalent à Matrix<3, 1>. Cette approche, bien qu'elle ne soit pas aussi concise que la syntaxe C 11, constitue une alternative viable dans les versions antérieures de C .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!