Jawne tworzenie wystąpienia
Można użyć jawnego wystąpienia do utworzenia wystąpienia funkcji lub klasy opartej na szablonach bez faktycznego użycia ich w kodzie.Ponieważ jest to przydatne podczas tworzenia biblioteki plików (.lib), która używa szablonów do dystrybucji, definicje szablonów bez wystąpień nie zostaną wprowadzane do plików obiektów (.obj).
Ten kod jawnie tworzy MyStack dla zmiennych typu int i sześć elementów:
template class MyStack<int, 6>;
Ta instrukcja tworzy wystąpienie MyStack bez rezerwowania żadnego miejsca na przechowywanie danych dla obiektu.Kod jest generowany dla wszystkich członków.
Następny wiersz jawnie uruchamia funkcję konstruktora:
template MyStack<int, 6>::MyStack( void );
Można jawnie zainstancjonować szablon funkcji używając specyficznego argumentu typu do ich ponownej deklaracji jak pokazano w przykładzie w Tworzenie wystąpienia szablonu funkcji.
Można użyć słowa kluczowego extern, aby uniemożliwić automatyczne tworzenie wystąpień członków.Na przykład:
extern template class MyStack<int, 6>;
Podobnie można oznaczyć określone elementy członkowskie jako zewnętrzne i nie możliwe do instancjonowania:
extern template MyStack<int, 6>::MyStack( void );
Można użyć słowa kluczowego extern, aby zapobiec generowaniu tego samego kodu wystąpienia, w jednym niż jeden module obiektów, przez kompilator.Należy zainstancjonować funkcję szablonu używając określonych jawnych parametrów szablonu w co najmniej jednym dołączanym module, jeśli funkcja jest wywoływana, w przeciwnym wypadku wyświetli się błąd Konsolidatora podczas kompilacji programu.
[!UWAGA]
Słowo kluczowe extern w specjalizacji odnosi się tylko do funkcji zdefiniowanych poza ciałem klasy.Funkcje zdefiniowane w deklaracji klasy są traktowane jako funkcje wbudowane i są zawsze tworzone ich wystąpienia.