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 не ругается.
Вроде, должно всегда работать. В чем может быть проблема?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.