Cita:
Iniciado por dmorill Eferion, podrías explicarme cómo funciona el template vacío? Es que no le veo mucho sentido pero funciona muy bien en el programa.
Código C++:
Ver originaltemplate< > bool Convert(const string& cadena, int& valor)
Gracias.
Ese template es una especialización. El compilador, al "ver" esta función, se pondrá a buscar y localizará el template "base", como ambos tienen la misma firma (mismo return y mismo nombre y mismo número de argumentos aunque de diferente tipo, que para eso es un template), entonces entiende que se trata de una especialización del template... en este caso no hace falta indicar el typename porque el compilador es capaz de deducirlo de forma implícita. Dicho de otra forma:
El compilador sabe que, en el template base, el tipo del segundo argumento de la función depende del template... si se encuentra una especialización en la que ese argumento en vez de ser "T" es un tipo concreto, entonces tiene la certeza de que ese tipo concreto es el que sustituye a "T".
El template base lo configuré para que retonrase "false", ya que el template genérico no sabe cómo realizar una conversión abstracta... pero sienta una base a partir de la cual tu puedes, mediante especializaciones del template, añadir todas las opciones que creas oportunas. Al final lo que te queda es un sistema completo de conversión en una sola función.