ho il seguente codice:Perché le conversioni dell'operatore non vengono chiamate in modo implicito per le funzioni basate su modelli? (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);
}
Quando compilo il codice con gcc 4.3.3 ricevo un messaggio (aaa.cc:17: error: no matching function for call to ‘tf(pointer<float>&)’
) che indica che il compilatore chiamato 'operator pointer<const T>'
per la funzione non template f() , ma non per la funzione di modello tf(). Perché e c'è qualche soluzione per sovraccaricare tf() con una versione const e non-const?
Grazie in anticipo per qualsiasi aiuto.
forse il software StackOverflow sta rimuovendo le parentesi angolari del modello? – jonner