我有一个模板类定义如下:
template<class T> class Wrap
{
/* ... */
public:
Wrap(const T&);
/* other implicit conversions */
/* ... */
};
我希望您可以像这样在类外定义这个类的所有比较运算符。
template<typename T> bool operator == (const Wrap<T>&, const Wrap<T>&)
{
// Do comparison here
}
然而,这个声明不支持将const T&
或任何其他类型隐式转换为const Wrap<T>&
。
那么我的问题是,当其中一个操作元是Wrap<T>
类型,而另一个不是时,如何使其支持隐式转换。我不想为每个可能的排列编写每个操作符的多个声明。