次のコードが与えられます:
void f()
{
    class A
    {
        template <typename T>
        void g() {}
    };
}
g ++ 4.4(および  g++-4.6 -std=gnu++0x)は次のように文句を言います:「ローカルクラスのメンバーテンプレートの無効な宣言」。
どうやらローカルクラスはテンプレートメンバーを持つことを許可されていません。この制限の目的は何ですか?C ++ 0xで削除されますか?
注:ローカルクラス自体をテンプレートメンバーにするのではなく、テンプレートにすると、次のようになります。
void f()
{
    template <typename T>
    class A
    {
        void g() {}
    };
}
「エラー:テンプレート宣言をブロックスコープに表示できません」というメッセージが表示されます。