hola, me ha surgido una duda de funciones con templates y no veo por donde encontrar la solucion:
tengo una funcion asi:
template <class T> func( T &obj){ ... }
y la puedo llamar asi:
int foo; func(foo);
en vez de llamarala asi:
int foo; <int>func(foo);
hasta aqui ninguna duda, pero no puedo hacer lo mismo con la funcion siguiente:
template <class T>
void func(T &obj,void ( T ::*pFunc)()) { ..}
a esta funcion la tengo q llamar con el tipo explicitamente, o sea asi:
clase foo; <clase>func(foo,foo.metodo);
y no asi, q es como quisiera:
clase foo; func(foo,foo.metodo);
sabeis alguna forma de solucionar el tema?. Espero haberme explicado bien :ojo:
saludos.
EDIT: para cuando un foro como flipcode?
[ Este Mensaje fue editado por: ethernet el 2002-08-09 05:26 ]
El que es un caso especial es el primero, no el segundo.
En el primero el compilador deduce el tipo y no necesitas especificarlo como parámetro de plantilla, en el segundo no.
Cuando ande más despejado intentaré pensar en un explicación más currada, pero muchas veces no sé de antemano si el compilador deduce o no y es cuestión de probarlo :ojo:.
La duda que tengo yo es si todos los compiladores hacen las mismas deducciones(cosa que no creo), por lo que puede ser mejor especificarlo siempre(salvo en casos muy claros, tras hacer pruebas en distintos compiladores)