Erro: "sem correspondência para o operador +", para o iterador de lista

Para o código abaixo, estou recebendo o erro no título da linha

<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>

Eu não estou recebendo o mesmo erro++It

Qual é o problema?

questionAnswers(4)

yourAnswerToTheQuestion