Instanciación explícita
Ejemplo:
Definición off-line de un método genérico definido de forma explícita. En este caso se trata de un método de la clase de los enteros (int) que está preconstruida en el lenguaje.
#include <iostream>
using namespace std;
template<class T> bool igual(T& a, T& b) { // funcion generica
return (a == b) ? true : false;
};
bool igual(int& a, int& b) { // instancia explícita
return (abs(a-b) < 5) ? true : false;
};
template bool igual<float>(float& a, float& b); // instanciación explicita
void main() { // =====================
int x = 2, y = 3;
double d1 = 2.0, d2 = 2.2;
float f1 = 2.0, f2 = 2.2;
long double l1 = 2.0, l2 = 2.2;
if ( igual(x, y) )
cout << "enteros iguales" << endl;
else
cout << "enteros distintos" << endl;
if ( igual(d1, d2) )
cout << "doubles iguales" << endl;
else
cout << "doubles distintos" << endl;
if ( igual(f1, f2) )
cout << "float iguales" << endl;
else
cout << "float distintos" << endl;
if ( igual(l1, l2) ) // instanciación implícita
cout << "long double iguales" << endl;
else
cout << "long double distintos" << endl;
}
Salida:
enteros iguales
doubles distintos
float distintos
long double distintos