Я унаследовал (не каламбур) некоторый код, который имеет это:
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();
};
И его использование выглядит так:
((Derived*)Base::GetInstance())->Bar();
Это определенное поведение?
Он работает на MSVC, и я понимаю, почему его можно определить, но я не знаю, как проверить, если это так (кроме просьбы о некоторой мудрости).