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