Я определил шаблон контейнер Tree<T>
, с два-членом класса итератора: const_iterator
и iterator
Non оператор сравнения члена для шаблона класса
Теперь я хотел бы добавить удобства операторов сравнения члена:
template<typename T>
bool operator==(Tree<T>::const_iterator a, Tree<T>::iterator b)
{
return a.ptr() == b.ptr();
}
Но у меня есть ошибка в компиляции:
declaration of 'operator==' as non-function
Почему? Это связано с шаблоном?
Даже при отсутствии 'typename' ваша перегрузка не может быть действительно использована, поскольку' T' не может быть выведено. Путь - добавить друга 'operator ==' inside 'Tree :: const_iterator'. –
Jarod42