Compartir vía


Advertencia C26444

No intente declarar una variable local sin nombre (es.84).

C++ Core Guidelines

ES.84: No (intentar) declarar una variable local sin nombre.

Una declaración de variable sin nombre crea un objeto temporal que se descarta al final de la instrucción. Estos objetos temporales con comportamiento notrivial pueden apuntar a código ineficaz que asigna e inicia inmediatamente los recursos o al código que omite involuntariamente los datos noprimitivos. A veces también puede indicar una declaración evidentemente errónea.

Comentarios

  • Esta regla detecta tipos con un destructor escrito a mano o un destructor generado por el compilador que llama transitivamente a un destructor escrito a mano.
  • Esta regla puede marcar el código que invoca un constructor notrivial de un tipo RAII.
  • La lógica omite temporalmente si se usan en expresiones de nivel superior. Un ejemplo son los elementos temporales que se pasa como argumentos o se usan para invocar una función.

Nombre del análisis de código: NO_UNNAMED_RAII_OBJECTS

Ejemplos

struct A { A(int i); ~A(); };
void Foo()
{
    A{42}; // warning C26444: Don't try to declare a local variable with no name (es.84).
}

Para corregir el problema, convierta el objeto temporal en un local.

struct A { A(int i); ~A(); };
void Foo()
{
    A guard{42}; // OK.
}

Consulte también

C26441
ES.84: No (intentar) declarar una variable local sin nombre.