I'm trying to create an iterator from a class that is almost an iterator, it worked fine for const iterator with counting_iterator, but when I needed to dereference it, it complained about this: error C2440: 'return' : cannot convert from 'const xmlmanager::xml_basic_node<T>' to 'boost::iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Difference>::reference' I think it is because it is still a const iterator... But I need a mutable iterator, and I have no clue in how to do it... I've tried the documentation, but it just explains what it is, but not ho to do it. The way I'm doing the iterator is: template <typename T> class xml_basic_node : public xml_basic_container<T>, public boost::iterator<boost::iterator_archetypes::readable_lvalue_iterator_t, xml_basic_node<T> > { public: // some specifics constructors bool operator == (xml_basic_node<T> const &n) const { // compares equality } xml_basic_node<T> &operator ++() { // advances... return *this; } }; and the iterator through counting_iterator: template <typename T> class acontainer { typedef boost::counting_iterator<xml_basic_node<T> > iterator; }; If someone could, please point me where I am getting wrong... I am days already trying to figure out how to do it... Sorry for the size of the mail and thanks in advance. -- Felipe Magno de Almeida UIN: 2113442 email: felipe.almeida@ic unicamp br, felipe.m.almeida@gmail com I am a C, modern C++, MFC, ODBC, Windows Services, MAPI developer from synergy, and Computer Science student from State University of Campinas(UNICAMP). To know more about: Unicamp: http://www.ic.unicamp.br Synergy: http://www.synergy.com.br current work: http://www.mintercept.com