Delphi2009でスマートポインタ

最近更新が少ないのは仕事が忙しいとか、書けるネタがないだけです。
Delphi2009でジェネリクスが使えるようになったことで、汎用の型付スマートポインタを実装できるとか。
Entropy Overload: Smart pointers in Delphi

procedure UseIt;
var
  x: TSmartPointer<TLifetimeWatcher>;
begin
  x := TLifetimeWatcher.Create(procedure
  begin
    Writeln('I died.');
  end);
end;

インターフェースが破棄されるときに、無名メソッドを実行できるようにしていますね。