# V2011. Consider inspecting signed and unsigned function arguments. See NN argument of function 'Foo' in derived class and base class.

Данное диагностическое правило добавлено по просьбе пользователей.

Диагностика выявляет следующую ситуацию. В базовом классе имеется виртуальная функция, в которой один из параметров имеет знаковый тип. В наследнике есть точно такая-же функция, но этот параметр является беззнаковым. Или ситуация противоположная: в базовом классе беззнаковый тип, в наследнике - знаковый.

Эта диагностика помогает выявить ошибки, когда при большом факторинге меняют тип функции в одном из классов, но забывают изменить эту функцию в другом классе.

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

    struct Q            { virtual int x(unsigned) { return 1; } };
    struct W : public Q {         int x(int)      { return 2; } };

На самом деле, код должен быть таким:

    struct Q            { virtual int x(unsigned) { return 1; } };
    struct W : public Q {         int x(unsigned) { return 2; } };

Если в базовом классе будет две функции 'x' с аргументами 'int' и "unsigned', то анализатор предупреждение V2011 выдавать не будет.