Ver Mensaje Individual
  #6 (permalink)  
Antiguo 14/04/2015, 20:36
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Diferenciar entrada de datos por consola

Eso es así por que en esas funciones el si sabe el formato que recibir por parámetros. Pero en la que pone <typename T> uno de los datos es genérico, o sea que puede recibir un char un int o cualquier otro tipo.

En resumen todas las funciones se llaman iguales, por el mismo nombre, lo que indica una sobrecarga. Lo que las distingue son sus argumentos, si el enviá 2 datos que no encajan correctamente en 2 de las funciones, seguramente en la que tiene la T como parámetro, esa sí se lo "traga todos los tipos". Lo único que hace es que si es invocada la que tiene la T retornará false.

Tienes una plantilla que recibe un const string& y un int&, otra que recibe un const string& y un float&, y por ultimo una que recibe const string& y un T&(cualquier tipo). ¿Si envio Convert( "lol", 32) sabes cual invoca? Invoca la const string& y un int&. Por otro lado si envió Convert( "lol", 23.42) invocará la const string& y un float&. ¿Y si envio? Convert( "Lol", "Lol" ) ??? será la const string& y un T&, esa retorna false si eso pasa. =)

¿Se parecen a if else más elaborados a que si XD?. si(if) envio un string y un float entra en una, si(else if, o otro if) envio un string y un int entra en otra, si no(else) envio un string y otro tipo de dato que no sea int o float entonces(else) entra en la genérica (string y T).

No tengo mucha exp con templates pero he leido algo sobre ellas.