В чем смысл использования { и } в инструкции case? Обычно, независимо от того, сколько строк есть в инструкции case, все строки выполняются. Это просто правило относительно старших/более новых компиляторов или что-то позади?
int a = 0;
switch (a) {
  case 0:{
    std::cout << "line1\n";
    std::cout << "line2\n";
    break;
  }
}
и
int a = 0;
switch (a) {
  case 0:
    std::cout << "line1\n";
    std::cout << "line2\n";
    break;
}