Partilhar 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. Por vezes, pode também indicar uma declaração claramente errada.

Observações

  • Esta regra deteta tipos com um destruidor escrito à mão ou um destruidor gerado pelo compilador que chama transitivamente um destruidor escrito à mão.
  • Esta 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 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.
}

Ver também

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