我知道我可以使用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;
};
答案 0 :(得分: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
可能会更好。