Template-Argumente
Nach oben zu Klassen-Templates (Übersicht) - Index
In der Deklaration von Klassen-Templates sind mehrere Argumente erlaubt. Template-Argumente können zusätzlich zu den Datentypen auch Werte repräsentieren:
template<class T, int size = 64> class Buffer { ... };
Argumente, die kein Template-Typ sind, wie beispielsweise size, und Typenarguemte können Standardwerte haben. Der Wert, der für ein solches Argument angegeben werden kann, muss ein konstanter Ausdruck sein:
const int N = 128;
int i = 256;
Buffer<int, 2*N> b1;// OK
Buffer<float, i> b2;// Fehler: i ist keine Konstante
Da jede Instantiierung einer Template-Klasse tatsächlich eine Klasse ist, erhält sie eine Kopie der statischen Member. Auch Template-Funktionen erhalten eine eigene Kopie der statischen lokalen Variablen.