﻿# V601\. Suspicious implicit type casting\.

Анализатор обнаружил подозрительное неявное приведение типа\. Такое приведение типа может говорить о наличии ошибки или о неаккуратности в коде\.

Рассмотрим первый пример\.

```cpp
std::string str;
bool bstr;
...
str = true;
```

Любой программист удивится, увидев как переменной типа 'std::string' присваивают значение 'true'\. Однако это вполне допустимая и работающая конструкция\.  Здесь программист просто ошибся и написал в коде не ту переменную\. 

Корректный вариант кода:

```cpp
std::string str;
bool bstr;
...
bstr = true;
```

Рассмотрим второй пример:

```cpp
bool Ret(int *p)
{
  if (!p)
    return "p1";
  ...
}
```

Строковый литерал "p1" превращается в значение 'true' и возвращается из функции\. Это очень странный код\.

Общие рекомендации по правке подобного кода дать сложно и каждый случай надо рассматривать отдельно\.