2010-06-22 3 views
0

en passant par une partie du code source mili je suis tombé sur une struct déclarée comme ceci:pas familier avec la déclaration struct/classe avec le modèle

template <class T, class Pre, class Pos> 
struct PrePosCaller<T*, Pre, Pos> 

(de here)

La partie que je ne suis pas familier avec est <T*, Pre, Pos>. Je comprends ce que le code fait et son but dans ce contexte mais je voudrais savoir où il est documenté donc je peux apprendre/comprendre un peu plus.

Répondre

2

Ceci est une spécialisation de modèle. En particulier une spécialisation partielle .

Quelque part dans le code il y a un modèle déclaré:

template <class T, class Pre, class Pos> 
struct PrePosCaller { //... 
}; 

ou quelque chose de similaire. Ensuite, ils fournissent une spécialisation de ce modèle pour les cas où le premier argument est un type de pointeur. Autrement dit, il s'agit d'une définition de modèle pour PrePosCaller lorsque le premier argument du modèle est un pointeur.

+0

+ 1- maintenant, je sais comment ça s'appelle. –

3

Je voudrais savoir où il est documenté

Si vous êtes à la recherche d'une introduction ainsi que de fond sur le sujet, procurez-vous une copie de C++ Templates: The Complete Guide.
Alors que la documentation définitive est la norme C++ elle-même, il n'est pas amusant de l'aborder sans un aperçu bien écrit.

1

Thinking in C++ Vol. 2 fournit une vue pédagogique sur les modèles et certaines techniques connexes. C'est aussi une excellente lecture de C++ en général. Et c'est gratuit.

+0

le lien est cassé. –

+0

désolé, l'a réparé. –

Questions connexes