Имя функции задано неверно, а тип возвращаемого значения имеет дополнительный iterator
:
template <typename T>
typename list<T>::iterator::iterator& iterator<T>::operator ++()
Это должно быть:
template <typename T>
typename list<T>::iterator& list<T>::iterator::operator++()
Обратите внимание, что при использовании using namespace std;
и объявление ваших собственных типов с именами, идентичными именам стандартной библиотеки (list
, iterator
и т. д.) может закончиться только слезами.Вам следует сбросить using namespace std;
.