The analyzer detected code handling containers which is likely to have an error. You should examine this code fragment.
Let's study several samples demonstrating cases when this warning is generated:
Sample 1.
void X(std::vector<int> &X, std::vector<int> &Y)
{
std::for_each (X.begin(), X.end(), SetValue);
std::for_each (Y.begin(), X.end(), SetValue);
}
Two arrays are filled with some values in the function. Due to the misprint, the "std::for_each" function, being called for the second time, receives iterators from different containers, which causes an error during program execution. This is the correct code:
std::for_each (X.begin(), X.end(), SetValue);
std::for_each (Y.begin(), Y.end(), SetValue);
Sample 2.
std::includes(a.begin(), a.end(), a.begin(), a.end());
This code is strange. The programmer most probably intended to process two different chains instead of one. This is the correct code:
std::includes(a.begin(), a.end(), b.begin(), b.end());
This diagnostic is classified as:
|
You can look at examples of errors detected by the V539 diagnostic. |