Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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