// Example 2 struct y : x { }; void all_funcs_y ( y _y ) { all_funcs_x ( _y ); } Notice that all_funcs_x was invoked on an argument of type y even though we earlier declared it to take an x.
// Example 3 struct x { int n ; virtual void f (); virtual void g (); virtual void h (); }; void all_funcs_x ( x _x ) { _x.