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