Error: "no hay coincidencia para el operador +", para el iterador de lista

Para el código de abajo, recibo el error en el título por línea.

<code>while((*(It2 + code)).exists){
</code>


<code>void locatetohashtable(std::list<Element> elist,
                       int *m,std::list<Element>& table,
                       std::list<std::string>& keylist )
{        
    std::list<Element>::iterator It2=table.begin();
    int i=0;
    int k=0;
    std::list<Element>::iterator It;
    for(It = elist.begin(); It != elist.end(); ++It)
    {
        int code=hash_func(stringIntValue((*It).name),*m,i);
        while((*(It2 + code)).exists){
            i++;
        }
        table.insert(*(It2+i), (*It));
        keylist.insert(keylist.begin(),(*It).name);
        k++;
    }
}
</code>

No estoy recibiendo el mismo error para++It

¿De qué se trata el problema?

Respuestas a la pregunta(4)

Su respuesta a la pregunta