#include <list>
using std::list;
class foo { ...
class bar : public foo { ...
static void print_all(list<foo*> &L) { ...
list<foo*> LF;
list<bar*> LB;
...
print_all(LF); // works fine
print_all(LB); // static semantic error
コンパイラが2番目の呼び出しを許可しない理由を私は知っていると思います。コンパイラがこの種の呼び出しを受け入れた場合に発生する可能性のある悪いことの例を誰かが挙げられますか?