Инстанцирование шаблона в шаблоне
От: Аноним  
Дата: 31.07.09 13:30
Оценка:
Всем привет!

Попался вот такой необычный пример. Ниже приведена максимально короткая версия программы (все имена и персонажи вымышлены ), в которой возникает ошибка:

template <class Type>
class A;

template <class Type>
class B
{
    friend class A<Type>;
private:
    struct Index
    {
        Type x;
        Type y;
    };
    Index* index_array;
public:
    B(): index_array(NULL) {}
};

template <class Type>
class A
{
    friend class B<Type>;
private:
    B<Type>::Index * another_index_array;
public:
    A(): another_index_array(NULL) {}
};


Такой код не компилируется. Компилятором выдается ошибка в следующей строчке:

    B<Type>::Index * another_index_array;


Причем если заменить Type на конкретный тип, например, int, то все прекрассно компилируется. Подскажите почему так происходит?
Re: Инстанцирование шаблона в шаблоне
От: Bender Rodriguez Мексика  
Дата: 31.07.09 13:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет!


А>Попался вот такой необычный пример. Ниже приведена максимально короткая версия программы (все имена и персонажи вымышлены ), в которой возникает ошибка:



А>
А>    B<Type>::Index * another_index_array;
А>


попробуйте
typename B<Type>::Index * another_index_array;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.