[INVALID] operator != @ std::list::iterator



  • for (std::list<msg::Envelope>::iterator cur(inbox_.begin()), end(inbox_.end()); cur != end; ++cur)
    

    Compiliert nicht mit der Fehlermeldung

    /usr/include/c++/4.3/bits/list.tcc:197: error: no match for ‘operator==’ in ‘__first.std::_List_iterator<_Tp>::operator* [with _Tp = msg::SEnvelope]() == __value’
    

    Bei einem Minimalbeispiel gibt's keine Probleme:

    #include <list>
    
    struct blob
    {
    
    };
    
    int main()
    {
    	std::list<blob> list;
    
    	for (std::list<blob>::iterator cur2(list.begin()), end2(list.end()); cur2 != end2; ++cur2)
    	{
    
    	}
    }
    

    inbox_.begin() + end() ist wie folgt definiert:

    typename container_t::iterator begin() {return values_.begin();}
    
    typename container_t::iterator end() { return values_.end();}
    

    values_ ist ein container_t values_

    container_t ist in diesem Fall ein

    typedef std::list<T, std::alocator<T> > container_t;
    

    und T ist msg::Envelope

    Jemand eine Idee?

    EDIT://
    Der Fehler lag wo *ganz* anders 😉


Log in to reply