Szablony odwołań
W tym temacie pokazano, w jaki sposób używać szablonu, który został wcześniej zadeklarowany.
template-name < template-arg-list >
Uwagi
Template-arg-list powinna być rozdzieloną przecinkami listą:
expressiontype-name
Wszystkie argumenty expression muszą być wyrażeniami stałymi.Kompilator tworzy nowe wystąpienie klasy lub funkcji opartej na szablonie, jeśli nie istnieje dokładne dopasowanie do wcześniej wygenerowanego szablonu.Na przykład, aby odwołać się do klasy MyStack zdefiniowanej w Szablony funkcji członkowskich:
MyStack< unsigned long, 5 > stack1;
// Creates a stack of unsigned longs.
MyStack< DWORD, 5 >stack2;
// Uses code created above.
MyStack< char, 6 > stack3;
// Generates new code.
MyStack< MyClass, 6 > stack4;
// Generates stack of MyClass objects.
Każdy wygenerowany szablon funkcji tworzy swoje własne zmienne statyczne i elementy członkowskie.
Wszystkie argumenty szablonu muszą być dostępne w punkcie, w którym są używane.
Wyjątkiem od powyższej reguły składni jest identyfikacja specjalizacji szablonu elementu członkowskiego w wyrażeniu po operatorach ::, . lub ->.Po tych operatorach może być określone słowo kluczowe template.Język Visual C++ odbiega od standardu, ponieważ słowo kluczowe template jest w tym kontekście zawsze opcjonalne, podczas gdy standard wymaga go w niektórych okolicznościach.Słowo kluczowe "template" nie może być używane w specjalizacji, chyba że następuje po tych operatorach.
[ :: | -> | . ] templatetemplate-name**<template-arg-list>**
W poniższym przykładzie określone jest wywołanie specjalizacji int szablonu funkcji członkowskiej f<T>(int), która jest elementem członkowskim klasy X i przekazuje do niej parametr 10.
X::template f<int>(10);