J'ai un récurrentes morceau de code où je boucle sur tous les membres de l' enum class
.
L' for
boucle que j'utilise actuellement a l'air très difficile par rapport à la nouvelle - range-based for
.
Est-il possible de prendre avantage de la nouvelle C++11 caractéristiques de couper vers le bas sur le niveau de verbosité pour mon for
boucle?
Code actuel que j'aimerais améliorer:
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;
}
En d'autres termes, il serait bien si je pouvais faire quelque chose comme:
for( const auto& c : COLOR )
{
// do work
}