考虑以下代码
template <class D> class Box {
private:
D d_;
public:
Box(D d) : d_(d) {}
D value() {
return d_;
}
D negate() {
return -d_;
}
};
我希望只有当D是算术类型时,方法negate()才存在/可用。这可能吗?
答案 0 :(得分:0)
我想出了一种方法:
template <class D> class Box {
private:
D d_;
public:
Box(D d) : d_(d) {}
D value() {
return d_;
}
template< typename T=D >
typename std::enable_if<is_arithmetic<T>::value, T >::type
negate() {
return -d_;
}
};