Le compilateur n'effectue pas de macro-expansion. C'est la tâche du pré-processeur. Tout cela apparaît comme une étape, mais le compilateur déborde réellement sur des tâches de pré-processeur séparées et piège la sortie pour vous.
modèles ne sont pas « développés » au moment de la compilation. Ils sont instanciés lors de l'utilisation lors de la compilation. La différence est que le compilateur génère immédiatement le code objet pour le modèle; il n'y a pas de code source intermédiaire qui sort. Vous ne pouvez pas regarder le code du modèle instancié comme source, il est exporté en tant qu'assemblage quand c'est nécessaire.
Si vous avez GCC, vous pouvez également appeler le pré-processeur directement à l'aide « cpp » avec les bons arguments (y compris la plupart des chemins et la ligne de commande définitions de macros). D'autres ont répondu pour MSVC.
Notez que la question pose également des questions sur l'extension du modèle, et la réponse sélectionnée ne répond pas à cette question. – TripShock
[Question connexe] (http://stackoverflow.com/questions/5193867) a une réponse plus utile (bien que spécifique à gcc). Pour obtenir plus de code C++ que RTL, utilisez la famille d'options '-fdump-tree -...' comme '-fdump-tree-gimple' au lieu de' -fdump-rtl -... ' dans cette réponse. – Ruslan