この例は、Stroustup の本、第 3 版、セクション 14.4.2 から引用したものです。
void f (Point p1, Point p2, auto_ptr<Circle> pc, Shape* pb)
{
auto_ptr<Shape> p (new Rectangle(p1 ,p2));
auto_ptr<Shape> pbox(pb);
p->rotate(45);
/ / ...
if (in_a_mess ) throw Mess();
/ / ...
}
「ここでは、例外がスローされるかどうかに関係なく、Rectangle、pb が指す Shape、および pc が指す Circle が削除されます。」