switch с диапазоном значений

Игорь Шаповал
Игорь Шаповал

Работая с switch мы иногда хотим, чтобы ветка выполнилась, если условия лежит

в диапазоне значений. Для этого мы должны писать следующее

switch (value) {
case 0:
case 1:
case 2:
   cout << "in range 0...2" << endl;
   break;
case 3:
case 4:
case 5:
   cout << "in range 3...5" << endl;
   break;   
default:
   cout << "out the range" << endl;
}

В GCC есть расширение, которое позволяет указывать в case диапазон значений

switch (value) {
case 0 ... 2:
   cout << "range in 0...2" << endl;
   break;
case 3 ... 5:
   cout << "range in 3...5" << endl;
   break;
default:
   cout << "out the range" << endl;
}

Было бы классно добавить в стандарт С++. 

19
рейтинг
2 комментария
Игорь Шаповал

yndx-antoshkka Скажите может эта фича быть в стандарте?

Игорь Шаповал
valera_ee

Было бы совсем хорошо, если бы можно было указывать через запятую разные значения в case

switch (value) 
{
    case: 0, 7, 11:
        std::cout << "state 1";
        break;

    case: 1 ... 5, 8:
        std::cout << "state 2";
        break;

    default:
        std::cout << "default state";
        break;
}
valera_ee
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения