Sémantique de génération des templates
Remonter à Commutateurs du compilateur relatifs aux templates - Index
Les compilateurs BCC32 et BCCOSX génèrent les méthodes suivantes pour les instances de templates
- Les méthodes effectivement utilisées
- Les méthodes virtuelles d'une instance
- Toutes les méthodes de classes explicitement instanciées
L'avantage de ce comportement aboutit à des fichiers objets, bibliothèques et exécutables sensiblement moins volumineux, suivant l'intensité de l'utilisation des templates.
Vous pouvez, si vous le souhaitez, utiliser le commutateur '-J' pour générer toutes les méthodes (voir Commutateurs du compilateur relatifs aux templates et Compilateur C++).
Vous pouvez aussi imposer la génération de toutes les méthodes hors ligne d'une instance de template à l'aide de la syntaxe d'instanciation de template explicite définie par la norme ISO/ANSI C++ Standard. La syntaxe est :
template class classname<template parameter>;
L'exemple STL suivant amène le compilateur à générer toutes les méthodes hors ligne de la classe "list<char>", que le code utilisateur y fasse ou non référence :
template class list<char>
Vous pouvez aussi instancier explicitement une seule méthode ou une donnée membre statique unique d'une classe template, auquel cas la méthode est générée par le fichier .OBJ même si elle n'est pas utilisée :
template void classname <template parameter>:: methodname ();