我可以定義一個類型作爲枚舉的基礎類型嗎?類似這樣的:自定義枚舉基礎類型
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++,有沒有辦法讓一個自定義類型作爲一個整型傳遞?
因此,在這種情況下的「整數類型」與「的std :: is_integral'? – Nelfeal
您發佈的示例將顛覆「std :: is_integral」的意圖。我不確定在語言中是否有任何東西來阻止這種情況發生。 –
[看起來像''中的任何東西都是未定義的行爲。](https://stackoverflow.com/questions/8513417/what-can-and-cant-i-specialize-in-the-std-namespace)。我應該看得更徹底。另外[this](https://stackoverflow.com/questions/25345486/why-specializing-a-type-trait-could-result-in-undefined-behaviour)(感謝HolyBlackCat)。 –
Nelfeal