2012-05-21 18 views

Respuesta

2

Adivina, leí completamente la Q y respondí algo que no se me había preguntado.
Así que aquí le pide al contestar Q:

Es un Explicit Specialization con una lista de argumentos plantilla vacía.

Al crear una instancia de una plantilla con un conjunto dado de argumentos de plantilla, el compilador genera una nueva definición basada en esos argumentos de plantilla. Pero existe la posibilidad de anular este comportamiento de generación de definiciones. En lugar de que el compilador genere la definición, podemos especificar la definición que el compilador debería usar para un conjunto determinado de argumentos de plantilla. Esto se llama especialización explícita.

El prefijo template<> indica que la siguiente declaración de plantilla no contiene parámetros de plantilla.

especialización explícita se puede aplicar a:

  • función o plantilla de clase
  • función miembro de una plantilla de clase
  • miembro de datos estático de una plantilla de clase
  • clase miembro de una plantilla de clase
  • plantilla de función de miembro de una plantilla de clase &
  • clase de miembro te mplate de una plantilla de clase
0

Es una especialización de plantilla donde todos los parámetros de la plantilla están completamente especificados, y no quedan parámetros en el <>.

Por ejemplo:

template<class A, class B> // base template 
struct Something 
{ 
    // do something here 
}; 

template<class A>   // specialize for B = int 
struct Something<A, int> 
{ 
    // do something different here 
}; 

template<>     // specialize both parameters 
struct Something<double, int> 
{ 
    // do something here too 
}; 
Cuestiones relacionadas