static_cast can’t convert from a virtual base class in C++

It converts only from non-virtual base class subobject:

struct B
    virtual ~B() {};

struct D : public virtual B { };

int main()
    D d;
    B& br1 = d;

    // cannot convert a 'B*' to a 'D*'; conversion from a virtual base class is implied
    // static_cast<D&>(br1); 


    return 0;

Leave a Reply

Your email address will not be published. Required fields are marked *