The following program compiles and runs - is it correct behavior? I read §11.5 in the January 2012 working draft but couldn't reach a conclusion. class B { virtual int f() { return 42; }; }; class D : public B { public: int f() { return 43; }; }; int main() { D d; B * pb = &d; D * pd = &d; //pb->f(); // error: B::f() is private pd->f(); // OK: D::f() is public } Georger