Here is a simple example:
#include <iostream>
template <class T>
void print(T in){
printf("NOT printing int\n");
}
template <> // <-- template specialization
void print<int>(int in){
printf("printing int\n");
}
int main(){
print(5); // printing int
return 0;
}
But the int
version can be written without even using templates, like this:
void print(int in){
printf("printing int\n");
}
So what the point of template specialization here?
Edit (example of where it might be needed)
#include <iostream>
template <class T>
void print(){
printf("printing float\n");
}
template <>
void print<int>(){
printf("printing int\n");
}
int main(){
print<float>();
return 0;
}