3

我知道我可以使用 static_assert 并确保类型 T 是数字但我想使用 std::enable_if。如何仅使用 std::enable_if 或 std::conditional 强制下面的 Vector3D 类为数字而不继承?

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;
};
4

1 回答 1

5

如果你真的想使用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.

于 2013-06-06T21:44:39.913 回答