Hoy estoy al día. Aquí va n00b pregunta número 7:Diferencia entre la especialización explícita y las funciones normales al sobrecargar una función de plantilla
¿Cuál es la diferencia entre la especialización explícita y las funciones normales cuando intenta sobrecargar una función de plantilla?
¿Cuál es la situación adecuada para utilizar la especialización explícita? Yo no lo entiendo del todo:
#include <iostream>
template <typename s> void test(s var1);
template <> void test<int>(int var1);
int main(){
test(1);
test(1.1);
test("hello!!");
return 0;
}
template <typename s> void test(s var1){
std::cout << var1 << std::endl;
}
template <> void test<int>(int var1){
std::cout << "int " << var1 << std::endl;
}
como se oponen a:
#include <iostream>
template <typename s> void test(s var1);
void test(int var1);
int main(){
test(1);
test(1.1);
test("hello!!");
return 0;
}
template <typename s> void test(s var1){
std::cout << var1 << std::endl;
}
void test(int var1){
std::cout << "int " << var1 << std::endl;
}
+1, buena pregunta. A menudo uso para pensar sobre esto hace algún tiempo. :) – iammilind