Compartilhar via


Aviso C26444

Não tente declarar uma variável local sem nome (es.84).

Diretrizes Principais do C++

ES.84: Não (tente) declarar uma variável local sem nome

Uma declaração de variável sem nome cria um objeto temporário que é descartado no final da instrução. Esses objetos temporários com comportamento não trivial podem apontar para código ineficiente que aloca e imediatamente joga fora recursos ou para o código que ignora involuntariamente dados não primitivos. Às vezes, também pode indicar uma declaração claramente errada.

Comentários

  • Esta regra detecta tipos com um destruidor escrito à mão ou um destruidor gerado pelo compilador que chama transitivamente um destruidor escrito à mão.
  • Essa regra pode sinalizar código que invoca um construtor não trivial de um tipo RAII.
  • A lógica ignora temporários se eles forem usados em expressões de nível superior. Um exemplo são os temporários que são passados como argumentos ou usados para invocar uma função.

Nome da análise de código: NO_UNNAMED_RAII_OBJECTS

Exemplos

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 corrigir o problema, converta o objeto temporário em um local.

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

Confira também

C26441
ES.84: Não (tente) declarar uma variável local sem nome