>>39
仕様です。

> 14.3.1 Template type arguments
>
> 2 A local type, a type with no linkage, an unnamed type or a type compounded from any of these types shall
> not be used as a templateargument for a template typeparameter.

テンプレートを展開する際にクラス名を単純に置換できなくなる(普通にスコープを切ると、テンプレート
側ではローカルクラスは見えない)のが問題なのだと推測されますが、できれば便利ですよね。

>>40
関数内で定義したクラスのことです。

int main(void)
{
  class foo {};  // これ
}