This diagnostic rule was added at users' request.
The analyzer has detected the following issue: the base class has a virtual function with one of the arguments of the signed type. The derived class contains the same function but with an unsigned argument. Or you may get a reverse situation: the base class contains an unsigned argument while the derived contains a signed one.
This diagnostic rule is used to detect errors when – during a large refactoring – the programmer changes the function type in one of the classes but forgets to change it in the other class.
For example:
struct Q { virtual int x(unsigned) { return 1; } };
struct W : public Q { int x(int) { return 2; } };
The code should actually look like this:
struct Q { virtual int x(unsigned) { return 1; } };
struct W : public Q { int x(unsigned) { return 2; } };
If your base class has two 'x' functions with the arguments of the 'int' and "unsigned' types, the analyzer won't generate the V2011 warning.