Mam klasy szablonu zdefiniowanego jak tenOperator przeciążenie poza klasą szablonu z niejawne konwersje
template<class T> class Wrap
{
/* ... */
public:
Wrap(const T&);
/* other implicit conversions */
/* ... */
};
chcę definiować wszystkich operatorów porównania dla tej klasy poza klasy jak ten
template<typename T> bool operator == (const Wrap<T>&, const Wrap<T>&)
{
// Do comparison here
}
Ta deklaracja nie obsługuje jednak niejawnych konwersji const T&
ani żadnego innego typu na const Wrap<T>&
.
Moje pytanie brzmi: w jaki sposób sprawić, aby wspierał on niejawne konwersje, gdy jeden z argumentów jest typu Wrap<T>
, a drugi nie. Nie chcę pisać wielu deklaracji każdego operatora dla każdej możliwej permutacji.
Świetna odpowiedź. Domyślam się, że brakowało ci odwołania do "tc2". – user1353535