c++ 如何使用带非模板参数的模板参数重载模板类成员函数[已关闭]

nx7onnlm  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(224)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

昨天关门了。
Improve this question
我正在尝试重载以下函数:

template <typename T>
    class Vector2
    {
    public:
        inline Vector2<T>& operator*=(const T& aScalar);
        inline Vector2<T> operator*(const T& aScalar) const;
        inline Vector2<T>& operator*=(const double& aScalar) { x = static_cast<T>(x * aScalar); y = static_cast<T>(y * aScalar); return *this; }
        inline Vector2<T> operator*(const double& aScalar) const { Vector3 result = *this; return result *= aScalar; }
};

但是当我尝试使用代码时,我得到了以下错误:

是否可以不使用专门化就重载模板参数?

2admgd59

2admgd591#

要处理Tdouble,而没有专门化是C++20 requires的情况:

Vector2<T>& operator*=(const T& aScalar) requires(!std::is_same_v<T, double>);
Vector2<T> operator*(const T& aScalar) const requires(!std::is_same_v<T, double>);
Vector2<T>& operator*=(const double& aScalar);
Vector2<T> operator*(const double& aScalar) const;

相关问题