Espacios de nombres
Variantes

atributo de C++: fallthrough (desde C++17)

De cppreference.com
 
 
 
 
 

Indica que la caída (fallthrough, ya que control del flujo del programa no fue controlado por una instrucción break) de la etiqueta case previa es intencional y no deberá ser diagnosticada por un compilador que advierte acerca de este comportamiento.

Sintaxis

[[fallthrough]]

Explicación

Solamente puede aplicarse a la instrucción nula para crear una instrucción fallthrough ([[fallthrough]];).

una instrucción fallthrough solamente puede ser usada en una instrucción switch, donde la próxima instrucción a ser ejecutada es una instrucción con una etiqueta case o default para esa instrucción switch. Si la instrucción fallthrough se encuentra dentro de un bucle, la siguiente instrucción (etiquetada) tiene que formar parte de la misma iteración de ese bucle.

Ejemplo

void f(int n) {
  void g(), h(), i();
  switch (n) {
    case 1:
    case 2:
      g();
     [[fallthrough]];
    case 3: // no hay advertencia sobre fallthrough
      h();
    case 4: // el compilador podría advertir sobre fallthrough
      if(n < 3) {
          i();
          [[fallthrough]]; // de acuerdo
      }
      else {
          return;
      }
    case 5:
      while (false) {
        [[fallthrough]]; // mal formado: la próxima instrucción no es parte de la misma iteración
      }
    case 6:
      [[fallthrough]]; // mal formado: no hay una etiqueta case o default subsecuente
  }
}