Шаблон элемента в локальном классе

Учитывая следующий код:

 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() {}
     };
 }

я получаю «ошибку: объявление шаблона не может отображаться в области блока» .

46
задан bitek 30 October 2012 в 13:37
поделиться