Следующий код не компилируется "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 не ругается.
Вроде, должно всегда работать. В чем может быть проблема?
Здравствуйте, Tonal-, Вы писали:
T>Здравствуйте, nadie, Вы писали:
N>>Вроде, должно всегда работать. В чем может быть проблема?
T>Проблема в Borland Builder 6.
T>Вез 4го сервиспака с ним вообще лучше не работать.
T>Но и с сервиспаком очень много косяков с шпблонами, исключениями, статиками...
T>Не зря многие библиотеки из boost-а с Builder 6 не собираются.
Аминь и все такое... Разве можно про такое на ночь.
З.Ы. А как себя ведет TurboC++ 2006 ? Так компилятор получше стал. Чууууть чуть.
[EOF]