很簡單。爲什麼會發生?它工作正常將所有其他整數類型。運算符<<是模糊打印枚舉值與基礎類型短
enum : unsigned short {
ushort_min = static_cast<unsigned short>(0u),
ushort_max = static_cast<unsigned short>(~0u)
};
enum : short {
short_min = short(ushort_max << (sizeof(short) * char_bit - 1)),
short_max = short(ushort_max >> 1)
};
std::cout << short_min; // BOOM
當然錯誤信息比「BOOM」多。 –
編譯器告訴我operator <<是不明確的,然後列出所有候選重載(這是所有基本類型)。我認爲標題就足夠了 – DeiDei
@ user1436187 - 'ostream'是一種類型;像幾乎所有的類型一樣,它可以用來定義對象。類型和對象都不能重載。你的建議應該是重載流插入器。 –