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 um 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

  • Essa regra detecta tipos com um destruidor manuscrito ou um destruidor gerado pelo compilador que chama transitivamente um destruidor manuscrito.
  • Essa regra pode sinalizar o 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