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