Modelos de referência
Este tópico mostra como usar um modelo que foi declarado anteriormente.
template-name < template-arg-list >
Comentários
O modelo de lista de argumentos deve ser uma lista separada por vírgulas de:
expressiontype-name
Todos os expressão argumentos devem ser expressões constantes.O compilador cria uma nova instância da classe de modelo ou função (chamada uma instanciação) se não houver nenhuma correspondência exata para um modelo gerado anteriormente.Por exemplo, a referência a MyStack classe definida no Modelos de função de membro:
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.
Cada modelo de função gerado cria suas próprias variáveis estáticas e membros.
Todos os argumentos de modelo devem estar acessíveis no ponto onde elas são usadas.
A exceção à regra de sintaxe acima é identificar uma especialização de modelo de membro em uma expressão após o ::, . ou -> operadores.Após esses operadores, a palavra-chave template pode ser especificado.Entregas de Visual C++ a partir do padrão em que o template palavra-chave é sempre opcional nesse contexto, ao passo que o padrão exige a ele em algumas circunstâncias.A palavra-chave do modelo não pode ser usada a especialização, a menos que esses operadores a seguir.
[ :: | -> | . ] templatetemplate-name**<template-arg-list>**
Por exemplo, a seguir especifica uma chamada para o int a especialização do modelo de função de membro f<T>(int) que é um membro da classe X e passa o parâmetro 10.
X::template f<int>(10);