La siguiente plantilla de especialización código:
template<typename T1, typename T2>
void spec1()
{
}
Caso de prueba 1:
template< typename T1> //compile error
void spec1<int>()
{
}
Caso de prueba 2:
template< typename T2> //compile error
void spec1<int>()
{
}
genera el siguiente error de compilación:
error C2768: ‘spec1’ : el uso ilegal de explícito argumentos de plantilla
¿Alguien sabe por qué?
- lo de la plataforma/compilador estás usando?
- Estoy utilizando Visual C++ 08
Función de las plantillas no pueden ser parcialmente especializados, sólo plenamente, es decir, como que:
Por qué la función de las plantillas no pueden ser parcialmente especializados, puede que desee leer esto.
Cuando usted se especializan parcialmente (sólo es posible para las clases), tendrías que hacer como que:
por lo que tienen a la lista
T1
de nuevo.La forma en que sus especialidades son por escrito, que sería ambigua para
spec1<int, int>
.T1
yT2
se utilizan como los tipos de los parámetros de la función, aunque, me parece sobrecargar mucho más legible, ya que es igual que la normal función de la sobrecarga de entonces.