The analyzer has detected an odd implicit type conversion. Such a type conversion might signal an error or carelessly written code.
Let's consider the first example.
std::string str; bool bstr; ... str = true;
Any programmer will be surprised on seeing an assignment of the 'true' value to a variable of the 'std::string' type. But this construct is quite permissible and working. The programmer just made a mistake here and wrote a wrong variable.
This is the correct code:
std::string str; bool bstr; ... bstr = true;
Consider the second example:
bool Ret(int *p) { if (!p) return "p1"; ... }
The string literal "p1" turns into the 'true' variable and is returned from the function. It is a very odd code.
We cannot give you general recommendations on fixing such code, since every case must be considered individually.
This diagnostic is classified as:
|
You can look at examples of errors detected by the V601 diagnostic. |