Avertissement C26444
N’essayez pas de déclarer une variable locale sans nom (es.84).
C++ Core Guidelines
ES.84 : Ne déclarez pas (essayez de) déclarer une variable locale sans nom
Une déclaration de variable non nommée crée un objet temporaire dis carte ed à la fin de l’instruction. De tels objets temporaires avec un comportement nontrivial peuvent pointer vers un code inefficace qui alloue et lève immédiatement des ressources ou vers le code qui ignore involontairement les données non primaires. Parfois, il peut également indiquer une déclaration manifestement incorrecte.
Notes
- Cette règle détecte les types avec un destructeur écrit manuellement ou un destructeur généré par le compilateur qui appelle de façon transitive un destructeur écrit manuellement.
- Cette règle peut marquer le code qui appelle un constructeur nontrivial d’un type RAII.
- La logique ignore temporairement s’il est utilisé dans des expressions de niveau supérieur. Un exemple est temporaire passé en tant qu’arguments ou utilisé pour appeler une fonction.
Nom de l’analyse du code : NO_UNNAMED_RAII_OBJECTS
Exemples
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).
}
Pour résoudre le problème, convertissez l’objet temporaire en objet local.
struct A { A(int i); ~A(); };
void Foo()
{
A guard{42}; // OK.
}
Voir aussi
C26441
ES.84 : Ne déclarez pas (essayez de) déclarer une variable locale sans nom