﻿# V822\. Decreased performance\. A new object is created, while a reference to an object is expected\.

Анализатор обнаружил, что скорее всего хотели создать ссылку на объект, а не новый объект\. Создание нового ненужного объекта может отнимать время и память\. 

Рассмотрим код, где справа привели переменную к ссылке, но при этом слева в объявлении её не указали:

```cpp
auto test = static_cast<NotPOD &>(npod);
```

В приведенном примере в правой части содержится приведение к ссылке на тип NotPOD, однако в левой части его нет\. Из\-за этого мы копируем объект вместо ожидаемой передачи по ссылке\.

Есть два варианта как можно улучшить этот код\. Первый – это заменить auto на decltype\(auto\):

```cpp
decltype(auto) test = static_cast<NotPOD &>(npod);
```

Теперь квалификатор '&' будет выводиться в соответствии с правой частью, но это достаточно громоздко, поэтому можно вручную добавить квалификатор:

```cpp
auto &test = static_cast<NotPOD &>(npod);
```

Если же копирование было действительно необходимо, тогда стоит убрать квалификатор из правой части, чтобы увеличить читаемость кода:

```cpp
auto test = static_cast<NotPOD>(npod);
```