我有一个这样定义的模板类
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>
所以我的问题是,当其中一个操作数是类型而另一个不是时,我如何让它支持隐式转换。我不想为每个可能的排列编写每个运算符的多个声明。