Здравствуйте, abrarov, Вы писали:
A>Не понятно, что означает "не работает" (MSVC 10.0 — собирается и даже без warning-ов)?
Не работает, значит не компилируется.
A>Что сразу заметно: std::auto_ptr<A> должен удалять объект, на который он указывает, посредством вызова деструктора ~A(). Но так как этот деструктор невиртуальный, и реально p указывает на экземпляр B, то имеет место ошибка — при уничтожении p вместо вызова деструктора ~B() будет вызван ~A() (и только).
В теме по-моему написано о чем вопрос. Виртуальный деструктор тут оффтоп.
Вот пример с ошибкой.