Учитывая следующий код:
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() {}
};
}
I get "error:объявление шаблона не может появляться в области видимости блока ".