Неоднозначность типа итератора. VC6
От: valker  
Дата: 11.05.06 08:11
Оценка:
Здравствуйте!

Столкнулся с такой проблемой.
Упрощенный код:
template<typename T>
struct myiter : public std::list<T>::iterator {
};

template<typename T>
myiter<T> getBegin(list<T>& lst) {
  return myiter<T>();
}

struct op {
  void operator()(int i) {
    std::cout << i << std::endl;
  }
};

void CPlaceNodeAlgorithm::placeDomesticNodes()
{
  std::list<int> lst;
  std::for_each(getBegin(lst), lst.end(), op());
}


В выделенной строке компилятор (vc6) не может определить, какой тип итератора использовать для шаблонной функции std::for_each.

error C2782: '_Fn __cdecl std::for_each(_II,_II,_Fn)' : template parameter '_II' is ambiguous
could be 'class std::list<int,class std::allocator<int> >::iterator'
or 'struct myiter<int>'


По-моему, неопределённости нет, ведь myiter<T> должен автоматически конвертироваться в list<T>::iterator. Или я неправ?

Заранее спасибо.
Posted using RSDN@HOME
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.