почему анализ кода vc на предмет повышения отметки C6011 может быть нулевым только для функции-члена const?

#c #code-analysis #sal

#c #анализ кода #sal

Вопрос:

Вот минимальный пример, запустите анализ кода в Visual studio 2019

 #include <sal.h>
class CTest
{
public:
    virtual void A() = 0;
    virtual void B() const = 0;
    _Check_return_ _Ret_maybenull_ static CTest* GetInstance()
    {
        return (CTest*)0;
    }
};


void Test2()
{
    auto a = CTest::GetInstance();
    a->A();     // no warning ?

    auto b = CTest::GetInstance();
    b->B();     // warning C6011
} 
 

Почему предупреждение C6011 влияет только на вызов функции-члена const нулевого указателя класса. но не для неконстантной функции-члена? Вероятно, оба кода завершатся сбоем.