10 Declarations [dcl.dcl]

10.6 Attributes [dcl.attr]

10.6.5 Fallthrough attribute [dcl.attr.fallthrough]

attribute-token fallthrough Может быть применен к null statement; такое заявление - провальное заявление. Они attribute-token fallthrough должны появляться не более одного раза в каждом attribute-listи не attribute-argument-clauseдолжны присутствовать. Заявление о провале может появиться только внутри вложенного switch statement. Следующим оператором, который будет выполняться после оператора перехода, должен быть помеченный оператор, метка которого является меткой case или меткой по умолчанию для того же switch оператора. Программа плохо сформирована, если такого оператора нет.

[ Note: Использование оператора fallthrough предназначено для подавления предупреждения, которое реализация могла бы в противном случае выдать для случая или метки по умолчанию, доступной из другого случая или метки по умолчанию на некотором пути выполнения. Реализациям рекомендуется выдавать предупреждение, если оператор сбоя недоступен динамически. ]end note

[Example:

void f(int n) {
  void g(), h(), i();
  switch (n) {
  case 1:
  case 2:
    g();
    [[fallthrough]];
  case 3:                       // warning on fallthrough discouraged
    h();
  case 4:                       // implementation may warn on fallthrough
    i();
    [[fallthrough]];            // ill-formed
  }
}

end example]