2010-08-02 4 views
0

Je ne réponds pas aux questions relatives aux modèles. Fondamentalement, comment les modèles sont compilés par le compilateur. J'ai googlé mais n'ai pas trouvé de réponses. Quelqu'un peut-il m'aider?Compilation de modèles C++

+3

Vous devez être un peu plus précis. –

+0

@Neil J'ai entendu dire que la compilation de gabarits impliquait deux étapes d'un intervieweur, mais je ne l'ai pas compris. – Poorna

Répondre

3

Les modèles eux-mêmes ne sont pas compilés, les instanciations particulières des modèles le sont. Les modèles peuvent être instanciés simplement en étant utilisés ou en étant explicitement instanciés.

E.g. étant donné un modèle de fonction:

template<class T> void f() {} 

Ceci est juste un modèle pour une fonction, que vous pouvez utiliser:

f<int>(); // compiler will instantiate a concrete f<int>() 

... conduisant à cette instanciation particulière compilé. Sinon, vous pouvez explicitement instancier:

template void f<int>(); 

Le modèle original est jamais compilé cependant, il est juste utilisé pour créer des exemples concrets.

+0

mais si nous n'instancions aucune instance concrète, et s'il y a une erreur de syntaxe dans le compilateur de template, des erreurs sont générées. Pourquoi est-ce – Poorna

+1

@siri Les modèles ne sont pas compilés, mais ils sont analysés par le compilateur avant toute instanciation, ce qui signifie qu'ils doivent être syntaxiquement corrects. –

3

Lire un livre, comme C++ Templates - The Complete Guide par David Vandevoorde et Nicolai M. Josuttis. A côté de cela, il explique comment les utiliser, il donne également un aperçu de la façon dont ils sont mis en œuvre.