template class less { public: // ... No hay campos en el Rep less () {} bool operator() (const T& a, const T& b) { return (a < b); } }; less L; float alfa, beta; if ( L(alfa, beta) ) { // if ( L.operator()(alfa, beta) ) { if ( less(alfa, beta) ) { // uso de la plantilla less<> typedef less Compare; if ( Compare(alfa, beta) ) { // uso de la plantilla less<> if ( alfa < beta ) { // ... template bool max (T a, T b) { return (a>b ? a : b); } /// Instanciación explícita para std::map<> class Sin_Mayusculas { public: // ... No hay campos en el Rep Sin_Mayusculas() {} bool operator()( const string& a, const string& b ) { return ( strcmpi( a.c_str() , b.c_str() ) < 0 ); } }; typedef std::map< string, double, Sin_Mayusculas > Diccionario; /// Ordenador genérico template > void sort( CONT & C ) { // ... if ( COMP( C[i], C[j] ) { swap( C[i], C[j] ); } // ... } { vector ARREGLO; // declaración del vector // ... sort< vector , std::less > ( ARREGLO ); // más bonito sort( ARREGLO ); // ... }