using Q<W<T> >::operator+=; компилируется?
От: nadie  
Дата: 29.10.06 20:50
Оценка:
Следующий код не компилируется "Borland Builder 6" с ошибкой "Member identifier expected",
и компилируется с помощью Microsoft Visual C++ Toolkit 2003:
template<class C> class Q {public: void operator+=(C a){}};

template<class T> class W: public Q<W<T> >
{public:
 void operator+=(double y){}
 using Q<W<T> >::operator+=;
};

int main() { W<int> a, b; a+=b; return 0;}

Если убрать заменить operator+= обычной функцией с той же сигнатурой,
то Builder выдаёт "Cannot conver 'W(int)' to 'double'"
Если убрать параметризацию W по T, то Builder не ругается.
Вроде, должно всегда работать. В чем может быть проблема?
Re: using Q<W<T> >::operator+=; компилируется?
От: Tonal- Россия www.promsoft.ru
Дата: 30.10.06 04:14
Оценка:
Здравствуйте, nadie, Вы писали:
N>Вроде, должно всегда работать. В чем может быть проблема?
Проблема в Borland Builder 6.
Вез 4го сервиспака с ним вообще лучше не работать.
Но и с сервиспаком очень много косяков с шпблонами, исключениями, статиками...
Не зря многие библиотеки из boost-а с Builder 6 не собираются.
Re[2]: using Q<W<T> >::operator+=; компилируется?
От: trophim Россия  
Дата: 03.11.06 17:20
Оценка:
Здравствуйте, Tonal-, Вы писали:

T>Здравствуйте, nadie, Вы писали:

N>>Вроде, должно всегда работать. В чем может быть проблема?
T>Проблема в Borland Builder 6.
T>Вез 4го сервиспака с ним вообще лучше не работать.
T>Но и с сервиспаком очень много косяков с шпблонами, исключениями, статиками...
T>Не зря многие библиотеки из boost-а с Builder 6 не собираются.

Аминь и все такое... Разве можно про такое на ночь.
З.Ы. А как себя ведет TurboC++ 2006 ? Так компилятор получше стал. Чууууть чуть.
[EOF]
Let it be! — Давайте есть пчелу!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.