Ho un blocco di codice ricorrente dove eseguo il loop su tutti i membri di un enum class
.Allow for Range-Based For con classi enum?
Il ciclo for
attualmente utilizzato sembra molto poco maneggevole rispetto al nuovo range-based for
.
C'è un modo per sfruttare le nuove funzionalità di C++ 11 per ridurre la verbosità per il mio ciclo corrente for
?
codice corrente che vorrei migliorare:
enum class COLOR
{
Blue,
Red,
Green,
Purple,
First=Blue,
Last=Purple
};
inline COLOR operator++(COLOR& x) { return x = (COLOR)(((int)(x) + 1)); }
int main(int argc, char** argv)
{
// any way to improve the next line with range-based for?
for(COLOR c=COLOR::First; c!=COLOR::Last; ++c)
{
// do work
}
return 0;
}
In altre parole, sarebbe bello se potessi fare qualcosa di simile:
for(const auto& c : COLOR)
{
// do work
}
Interessante. Ada ha questa caratteristica dal 1983. – Shark8
'(COLOR) (((int) (x) + 1))' Invece di 'int', considera l'uso di' std :: underlying_type :: type'. –
È previsto che il viola venga saltato? – kennytm