je le code suivant:Pourquoi les conversions d'opérateur ne sont-elles pas implicitement appelées pour des fonctions de modèle? (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);
}
Lorsque je compile le code avec gcc 4.3.3 j'obtenir un message (aaa.cc:17: error: no matching function for call to ‘tf(pointer<float>&)’
) indiquant que le compilateur appelé 'operator pointer<const T>'
pour la fonction non-basé sur un modèle f() , mais n'a pas fait pour la fonction tfated(). Pourquoi et comment contourner tf() avec une version const et non-const?
Merci d'avance pour toute aide.
peut-être que le logiciel stackoverflow supprime les chevrons de votre modèle? – jonner