Re[5]: Scope
От: dupamid Россия  
Дата: 13.09.02 10:01
Оценка:
Здравствуйте Павел Кузнецов, Вы писали:

ПК>
ПК>class Outer
ПК>{
ПК>public:
ПК>  template<class T> class Inner;

ПК>  class Other;
ПК>};

ПК>class Outer::Inner<Other> : Other { }; // это не компилируется


ПК>Хотя, все доступные мне компиляторы, компилирующие пример, приведенный Fiend, не компилируют этот (Borland C++ Compiler, Intel C++ Compiler, Gcc, VC++, Comeau C++).


Это совершенно неверный пример!!! Как Вы такое можете писать

class Outer
{
public:
  template<class T> class Inner;

  class Other {}; // неполный тип, наследоваться от него нельзя, нужно добавить {}
};

template<> // нужно добавить template<>
class Outer::Inner<Outer::Other> : Other { }; // это не компилируется


Так будет компилироваться! Часть находящаяся в <> является частью объявления класса, так что правило, о котором я говорю начинает действовать после >.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.