У меня есть повторяющийся кусок кода, где я перебираю все элементы enum class
.
Цикл for
, который я использую в настоящее время, выглядит очень неудобно по сравнению с новым range-based for
.
Можно ли использовать новые возможности С++ 11, чтобы сократить объем текста текущего цикла for
?
Текущий код, который я хотел бы улучшить:
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;
}
Другими словами, было бы неплохо, если бы я мог сделать что-то вроде:
for( const auto& c : COLOR )
{
// do work
}