我想使用std::enable_if<>避免环境过载
operator*(T,U)
(或重新定义)来自
MyClass*otherT
vs
otherT*MyClass
vs
MyClassT*MyClassT
比方说
MyClass
声明为:
template <typename T> class MyClassT { ... }
然后在全球范围内:
template <typename T, typename U>
MyClassT<T> operator*(const MyClassT<T>& t, const MyClassT<U>& u)
{
//...
}
template <typename T, typename U, std::enable_if_t<!std::is_same_v<MyClassT<T>, U>,bool> = true >
MyClassT<T> operator*(const MyClassT<T>& t, const U& u)
{
//...
}
template <typename T, typename U, std::enable_if_t<!std::is_same_v<MyClassT<U>, T>,bool> = true >
MyClassT<U> operator*(const T& t, const MyClassT<U>& u)
{
//...
}
但是的代码
MyClassT<double> a;
double b;
MyClassT<double> c = a * b;
还是找不到过载的操作员,需要帮助怎么了?