С учетом следующего кода:
void f()
{
class A
{
template <typename T>
void g() {}
};
}
g++ 4.4 (а также g++-4.6 -std=gnu++0x
) жалуется: "недопустимое объявление шаблона члена в локальном классе".
По-видимому, локальным классам не разрешено иметь члены шаблона. Какова цель этого ограничения? Будет ли он удален в С++ 0x?
Примечание. Если я сделаю сам локальный класс шаблоном, а не предоставил ему член шаблона:
void f()
{
template <typename T>
class A
{
void g() {}
};
}
Я получаю "ошибку: объявление шаблона не может появляться в области блока".