I tienen el siguiente código:¿Por qué las conversiones de operador no requieren implícitamente funciones con plantilla? (C++)
template <class T>
struct pointer
{
operator pointer<const T>() const;
};
void f(pointer<const float>);
template <typename U>
void tf(pointer<const U>);
void g()
{
pointer<float> ptr;
f(ptr);
tf(ptr);
}
Cuando compilar el código con gcc 4.3.3 consigo un mensaje (aaa.cc:17: error: no matching function for call to ‘tf(pointer<float>&)’
) que indica que el compilador llamado 'operator pointer<const T>'
para la función no templated f() , pero no lo hizo para la función con plantilla tf(). ¿Por qué y hay alguna solución alternativa a la sobrecarga de tf() con una versión const y non const?
Gracias de antemano por cualquier ayuda.
¿quizás el software stackoverflow está eliminando los soportes angulares de su plantilla? – jonner