如何使用enable_if来限制整个类

How to use enable_if for restricting a whole class

本文关键字:何使用 enable if      更新时间:2023-10-16

我知道我可以使用static_assert并确保类型T是数字,但我想使用std::enable_if。我怎么能强迫Vector3D类下面是数字只使用std::enable_if或std::条件没有继承?

template<typename T>
class Vector3D
{
    private:
        T X, Y, Z;
};

我试着:

template<typename T>
class Vector3D<typename std::enable_if<std::is_integral<T>::value, T>::type>
{
    private:
        T X, Y, Z;
};

如果你真的想使用enable_if,你可以这样写你的类模板:

template<typename T, typename = typename     
    std::enable_if<std::is_arithmetic<T>::value>::type>
class Vector3D
{
    private:
        T X, Y, Z;
};

然而,正如其他人注意到的那样,使用static_assert可能会更好。