Wystąpienia szablonu klasy
W odróżnieniu od funkcji szablonów podczas tworzenia wystąpienia szablonu klasy w przekazując argumenty dla szablonów klasy tworzenia jawnego wystąpienia klasy.Aby utworzyć wystąpienie TempClass:
TempClass< float, 6 > test1; // OK
TempClass< char, items++ > test2; // Error, second parameter
// must be constant.
Kompilator generuje kod szablonu klasy lub funkcji przy uruchamianiu jest klasa lub funkcji.Gdy jest ona wywoływana i funkcji członka wirtualnego zostanie uruchomiony podczas jego klasy jest zbudowane, jest wystąpienie funkcji składowej.Może to powodować problemy, jeśli buduje się biblioteki z szablonów dla innych użytkowników.Aby uzyskać więcej informacji, zobacz Jawnego wystąpienia.
Szablon klasy jest najpierw specjalistyczne i następnie utworzyć wystąpienia przez kompilator.Kompilator nie tworzy wystąpienia szablonu klasy do momentu dokonania odniesienia do członka tej klasy szablonu, sizeof jest używany w klasie lub tworzone jest wystąpienie.
Jawne specjalizacji, szablonu jest dostosowaną wersję szablonu dla określonego typu.
// template_instantiation2.cpp
template<class T> class X
{
};
// Explicit specialization of X with 'int'
template<> class X<int>
{
};
int main()
{
}
Jawne specjalizacji bez template<> wygeneruje błąd.Wersje Visual C++ przed Visual C++.NET 2003 akceptowane następującej składni:
// Explicit specialization of X with 'char'
class X<char> // C2906
{
};
Jeśli szablon jest jawnie tworzone wystąpienia lub wyspecjalizowane raz, jego nie można jawnie tworzone wystąpienia lub wyspecjalizowane po raz drugi w tym samym programie dla tego samego zestawu szablonów argumentów.Dalsze kierunki z innego szablonu argumenty są dozwolone.
Jeśli nie ma jawnego wystąpienia lub specjalizacji dla argumentu określonego szablonu, szablon będzie niejawnie utworzone w momencie, gdy pierwszy jest używany.
Ponieważ różne wystąpieniami tego samego szablonu są różnych typów, statyczne elementy członkowskie dla jednego specjalizacji lub wystąpienia szablonu są niezależne od elementy statyczne dla różnych specjalizacji lub wystąpienia tego samego szablonu.