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