Änderung der Semantik zur Erzeugung von Templates
Nach oben zu Compiler-Optionen für Templates - Index
Die BCC32- und BCCOSX-Compiler generieren für Template-Instanzen die folgenden Methoden:
- Diejenigen Methoden, die tatsächlich verwendet werden
- Virtuelle Methoden einer Instanz
- Alle Methoden explizit instantiierter Klassen
Der Vorteil dieses Verhaltens liegt darin, dass bedeutend kleinere Objektdateien, Bibliotheken und Programmdateien - abhängig von der Häufigkeit des Einsatzes von Templates - erzeugt werden.
Wahlweise können Sie den '-J'-Schalter verwenden, um alle Methoden zu erzeugen (siehe Compiler-Optionen für Templates und C++-Compiler).
Alle expliziten Methoden einer Template-Instanz können auch generiert werden, indem Sie die Syntax zur Instantiierung von Templates verwenden, wie sie im Standard ISO/ANSI C++ definiert ist. Die Syntax lautet:
template class classname<template parameter>;
Das folgende STL-Beispiel weist den Compiler an, alle expliziten Methoden für die Klasse list<char> zu generieren, ungeachtet dessen, ob sie vom Benutzer-Code referenziert werden.
template class list<char>
Sie können auch eine einzelne Methode oder ein einzelnes statisches Datenelement einer Template-Klasse explizit instantiieren. Dadurch wird die Methode in der .OBJ-Datei generiert, auch wenn sie nicht verwendet wird.
template void classname <template parameter>:: methodname ();