Ho una classe template definita come questol'overloading degli operatori al di fuori di una classe modello con conversioni implicite
template<class T> class Wrap
{
/* ... */
public:
Wrap(const T&);
/* other implicit conversions */
/* ... */
};
voglio definire tutti gli operatori di confronto per questa classe di fuori della classe come questo
template<typename T> bool operator == (const Wrap<T>&, const Wrap<T>&)
{
// Do comparison here
}
Tuttavia, questa dichiarazione non supporta le conversioni implicite di const T&
o di qualsiasi altro tipo su const Wrap<T>&
.
Quindi la mia domanda è: come posso far sì che sostenga le conversioni implicite quando uno degli operandi è di tipo Wrap<T>
e l'altro no. Non voglio scrivere più dichiarazioni di ogni operatore per ogni permutazione possibile.
Ottima risposta. Suppongo che tu abbia perso il riferimento per 'tc2'. – user1353535