您如何仅对算术类型使用类成员?
我想获得类似的东西:
template<typename T>
struct A{
std::vector<T> member;
}
template<typename T>
std::vector<enable_if_t<is_arithmetic_v<T>, T>> A<enable_if_t<is_arthmetic_v<T>, T>::member = {}
但这无法编译。
编辑:我找到了一种解决方案:
template<typename T>
struct A_arit {
static std::vector<T> member;
}
template<typename T>
struct A_not_arit {
static std::vector<T> member;
}
template<typename T, class Parent = std::conditional_t<
std::is_arithmetic_v<T>, A_arit<T>,
A_nA<T>>>
struct A : public Parent {
using Parent::member;
}
template<typename T>
std::vector<T> A_arit<T>::member = {elementsForArithmetics}
template<typename T>
std::vector<T> A_not_arit<T>::member = {elementsForOthers}
但是还有更优雅的方法吗?