Upozornění C26444
Nepokoušejte se deklarovat místní proměnnou bez názvu (es.84).
C++ Core Guidelines
ES.84: Nepokoušejte se deklarovat místní proměnnou bez názvu
Deklarace nepojmenované proměnné vytvoří dočasný objekt, který se zahodí na konci příkazu. Takové dočasné objekty s netriviálním chováním můžou odkazovat na neefektivní kód, který přiděluje a okamžitě vyhazuje prostředky, nebo na kód, který neúmyslně ignoruje neprimitivní data. Někdy může také znamenat prosté nesprávné deklarace.
Poznámky
- Toto pravidlo detekuje typy s ručně napsaným destruktorem nebo destruktorem vygenerovaným kompilátorem, který tranzitivně volá ručně napsaný destruktor.
- Toto pravidlo může označit kód, který vyvolá netriviální konstruktor typu RAII.
- Logika dočasně přeskočí, pokud se používají ve výrazech vyšší úrovně. Jedním z příkladů je dočasné předání jako argumenty nebo použití k vyvolání funkce.
Název analýzy kódu: NO_UNNAMED_RAII_OBJECTS
Příklady
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).
}
Pokud chcete tento problém vyřešit, převeďte dočasný objekt na místní.
struct A { A(int i); ~A(); };
void Foo()
{
A guard{42}; // OK.
}
Viz také
C26441
ES.84: Nepokoušejte se deklarovat místní proměnnou bez názvu