title: Down casting an instance of Base to a derived class with no members
body: <p>I inherited (no pun intended) some code that has this:</p>
  
  <pre><code>class Base {
  public:
      static Base* GetInstance() { 
          return pInstance; //static member (initialized as Singleton with new Base(); 
      }
      void Foo();
  };
  
  
  class Derived : public Base {
      Derived() {}
  public:
      Bar();
  };
  
  </code></pre>
  
  <p>And usage of it looks like this:</p>
  
  <pre><code>((Derived*)Base::GetInstance())-&gt;Bar();
  </code></pre>
  
  <p>Is this defined behavior?</p>
  
  <p>It works on MSVC and I understand why it could be defined, but I don't know how to verify if it is (other than asking for some wisdom).</p>