Re: и опять шаблоны и gcc...
От: dupamid Россия  
Дата: 06.08.02 07:05
Оценка:
Здравствуйте Qiller, Вы писали:

Q>Привет All,


Q>Имеем шаблон вида

Q>
Q>template <typename T1>
Q>class A {
Q>public:
Q>  template <typename T2>
Q>  class B {};

Q>  template<>
Q>  class B<int> {};
Q>};
Q>

Q>Хотя VC6/7 это кушают без проблем, стандарт (14.7.3/18) это дело запрещает
Q>Соответственно, gcc код не компилирует. Возможно ли это дело переписать
Q>как-то иначе без частичной специализации? Уж больно не хочется делать
Q>две версии: для vc и gcc...

Q>Happy Coding,

Q>Sergey.

У меня нет под рукой gcc, но попробуй написать так:
[ccode]
// это сам шаблон A<T1>::B<T2>
template<class T1, class T2>
class AB
{
public:
int i;
};

// это специализация на int A<T1>::B<int>
template<class T1>
class AB<T1, int>
{
public:
int j;
};

template<class T1>
class A
{
public:
// здесь нужно будет разобраться только с конструкторами
template<class T2>
class B : public AB<T1, T2>
{
};
};

int main()
{
A<int>::B<char> abc;
abc.i = 5;

A<int>::B<int> abi;
abi.j = 5;
}
[\ccode]

Может быть, в твоем случае можно обойтись без вложенного класса. Не очень удобно, но работать должно, о результатах, пожалуйста, сообщи
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.