¿Cómo puede una clase base de C ++ determinar en tiempo de ejecución si un método ha sido anulado?

El siguiente método de muestra está destinado a detectar si se ha anulado o no en una clase derivada. El error que recibo de MSVC implica que es simplemente incorrecto intentar obtener el puntero de función a un miembro "vinculado", pero no veo ninguna razón lógica por la que esto debería ser un problema (después de todo, estará eneste-> vtable). ¿Hay alguna forma no hacky de arreglar este código?

class MyClass
{
public:
    typedef void (MyClass::*MethodPtr)();  

    virtual void Method()
    {
        MethodPtr a = &MyClass::Method; // legal
        MethodPtr b = &Method;  // <<< error C2276: ‘&’ : illegal operation on bound member function expression

        if (a == b)     // this method has not been overridden?
            throw “Not overridden”;
    }
};

Respuestas a la pregunta(3)

Su respuesta a la pregunta