Некоторые особенности использования switch с инициализацией переменной, появившиеся в стандарте C++17:
- Поддержка особой формы конструкции switch. 3 Она принимает выражение, значение которого сравнивается с константами после операторов case, но перед выражением может идти определение и инициализация переменной. 3
- Ограничение области видимости переменной. 4 Благодаря этому механизму область видимости переменной остаётся минимальной. 4 До C++17 этого можно было добиться только с помощью дополнительных фигурных скобок. 4
- Возможность повторного использования именованного идентификатора в другом условном блоке. 1
Пример использования: в конструкции switch определяется переменная k, которая доступна только в рамках этой конструкции switch. 3 В качестве выражения используется значение переменной op, которая представляет знак операции. 3 В зависимости от этого значения выполняется определённая операция с переменными n и k. 3