Если я загляну в заголовок из msvc 2008, я обнаружу, что каждое определение оператора удваивается с помощью операции шаблона типа _Другие, как, например,
_Myt& operator+=(const _Myt& _Right)
{ // add other complex
this->_Add(_Right);
return (*this);
}
template<class _Other> inline
_Myt& operator+=(const complex<_Other>& _Right)
{ // add other complex
this->_Add(_Right);
return (*this);
}
Вопрос в том, почему не будет второго определенияодного достаточно?
PS: Кажется, в gcc присутствует только второе определение, теперь я больше не волнуюсь.:)