13
struct A
{
    // error C2216: 'explicit' cannot be used with 'virtual'
    virtual explicit operator bool() const 
    {
        return true;
    }
};

struct B : A
{
    // error C2216: 'explicit' cannot be used with 'override'
    explicit operator bool() const override 
    {
        return false;
    }
};

int main()
{
    if (A())
    {}

    if (B())
    {}
}

私のコンパイラは VC++ 2013 RC です。

explicitと互換性がないのはなぜvirtualですか?

根拠は何ですか?

4

1 に答える 1