爲了實驗性目的,當嘗試爲枚舉類重載一個小於運算符時出現問題,但出乎意料地它僅適用於一元運算符,即++。編譯器投訴歧義:枚舉類的關係運算符重載
enum class Fruit
{
apple,
banana,
orange,
pineapple,
lemon,
};
bool operator<(Fruit l, Fruit r)
{
return true;
}
int main()
{
Fruit f = Fruit::banana;
Fruit a = Fruit::apple;
std::cout << (a < f);
}
編譯器發現明顯比在全球範圍內運營商另一個較少,但爲什麼它不會採取重載一個爲它的精確匹配?
我也試過運算符<(const Fruit&l,const Fruit&r)但得到相同的結果。 – user6514323
我沒有得到你的關注。您的[運營商實際上稱爲](http://coliru.stacked-crooked.com/a/c3f8b15987049420)? –
適合我。 http://ideone.com/GO6HWR。 –