Измените это на:
{ if(this != &in) this->set(in); return (*this); }
Я подозреваю, что функция set
определена в базовом классе? Неквалифицированные имена не ищутся в базовом классе, который зависит от параметра шаблона. Так что в этом случае имя set
, вероятно, связано с шаблоном std::set
, который требует аргументов шаблона.
Если вы квалифицируете имя с помощью this->
, компилятору явно будет сказано изучить область действия класса, и он включит в этот поиск зависимые базовые классы.