Hacer referencia a las plantillas
En este tema se muestra cómo utilizar una plantilla que se ha declarado previamente.
template-name < template-arg-list >
Comentarios
la plantilla-arg-lista debe ser una lista separada por comas de:
expressiontype-name
todos los argumentos de la expresión deben ser expresiones constantes.El compilador crea una nueva instancia (denominada una creación) de la clase o la función con plantilla si hay no coincidencia exacta en una plantilla previamente generada.Por ejemplo, para hacer referencia a la clase de MyStack definido en Plantillas de función miembro:
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 plantilla generada function crea sus propias variables estáticas y miembros.
Todos los argumentos de plantilla deben ser accesibles en el punto donde se utilizan.
La excepción a la regla de sintaxis anterior se compone de la identificación de una especialización de plantilla miembro en una expresión después de ::, de . o de los operadores de - > .después de estos operadores, la palabra clave template puede ser especificada.Visual C++ sale de estándar en que la palabra clave de template siempre es opcional en este contexto, mientras que el estándar se requiere en determinadas circunstancias.La palabra clave de plantilla no se puede utilizar en la especialización a menos que siga estos operadores.
[ :: | -> | . ] templatetemplate-name<template--arglist**>**
Por ejemplo, el siguiente especifica una llamada a la especialización de int de plantillaf<T>(int) de la función miembro que es miembro de la clase X y le pasa el parámetro 10.
X::template f<int>(10);