Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Не пытайтесь объявить локальную переменную без имени (es.84).
Основные рекомендации по C++
ES.84: не пытайтесь объявить локальную переменную без имени
Объявление неназванной переменной создает временный объект, который удаляется в конце инструкции. Такие временные объекты с нетривиальным поведением могут указывать либо на неэффективный код, который выделяет и немедленно выбрасывает ресурсы, либо в код, который непреднамеренно игнорирует непримитивные данные. Иногда это также может указывать на явно неправильное объявление.
Замечания
- Это правило обнаруживает типы с помощью деструктора, созданного компилятором или деструктором, который транзитивно вызывает деструктор, написанный вручную.
- Это правило может пометить код, вызывающий нетривиальный конструктор типа RAII.
- Логика пропускает временные элементы, если они используются в выражениях более высокого уровня. Одним из примеров является временные, передаваемые в качестве аргументов или используемые для вызова функции.
Имя анализа кода: NO_UNNAMED_RAII_OBJECTS
Примеры
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).
}
Чтобы устранить проблему, преобразуйте временный объект в локальный.
struct A { A(int i); ~A(); };
void Foo()
{
A guard{42}; // OK.
}
См. также
C26441
ES.84: не пытайтесь объявить локальную переменную без имени