Интересует совместимость предков и наследников.
class T{
public:
virtual void foo()=0;};
class Child:public T{
public:
void foo(){
printf("foo\n");}};
int main(){
void *child=new Child;
/*
указатель гуляет по всем кругам ада; следующий код, вообще говоря,
будет выполняться в другой функции, где компилятор точно не знает
о происхождении void *child.
*/
T *t=reinterpret_cast<T*>(child);
t->foo();}
Есть ли гарантия, что во время t->foo() все пройдет гладко? Есть ли такая гарантия хотя бы для всех платформ гцц?