howardhinnant.github.io/incomplete.html
опытке использоватьauto_ptr
с типом, который был объявлен с предварительным объявлением, как это:
class A;
...
std::auto_ptr<A> a;
деструкторA
не называется (видимо, потому чтоauto_ptr
внутреннеdelete
s базовый указатель и деструктор для неполного типа не могут быть вызваны).
Тем не менее, тот же код работает нормально, и деструктор вызывается при использованииstd::shared_ptr
вместоstd::auto_ptr
, Как это можно объяснить?