>>52
C 言語の時点でも nested struct や nested class は存在したから、まぁ自然な
拡張だと思うけど。

私は nested class, local class 両方とも、実際に使ってます。local class の代表
的な使い方としては、変数スコープに合わせて何かを処理するというのがありま
す。

struct MutexHolder
{
  MutexHolder() { GetMutex(); }
  ~MutexHolder() { ReleaseMutex(); }
};

こんな感じの class/struct を関数内で定義して使うとか。もちろんグローバル
にい定義してもいいのですが、それだとグローバルな名前空間を汚してしまい
ますから。

nested class は、たとえば実装を Bridge パターンを使って隠す場合に

class Foo
{
  struct Impl; // nested class
  const std::auto_ptr<Impl> pImpl_;
public:
  Foo();
  ~Foo();
  // 他にメソッドいろいろ
};

と公開ヘッダで書いておいて、実装側で struct Foo::Impl を定義するとか。
別に nested class にせずに FooImpl というクラスを定義しても良いけど、
この方が関係が良く分かって良いかな、と。

Command Pattern を使う場合にも、各コマンドを操作対象のクラスの nested
class にしてます。

class TextSurface
{
public:
  class SetTextCommand;
  class SetFontCommand;
  ...
};