【发布时间】:2017-06-18 18:49:10
【问题描述】:
我可以定义一个类型作为枚举的基础类型吗?像这样的:
struct S {
S(int i) : value(i) {}
operator int() { return value; }
int value;
};
enum E : S {
A, B, C
};
错误信息告诉我 S 必须是整数类型。我试图像下面这样专门化std::is_integral,但似乎在这种情况下,“整数类型”确实意味着基本类型之一。
namespace std {
template<>
struct is_integral<S> : public true_type {};
}
那么,使用任何版本的 C++,有没有办法让自定义类型作为整数类型传递出去?
【问题讨论】: