Cómo iterar a través de una lista de objetos en c ++

Soy muy nuevo en c ++ y me cuesta descubrir cómo debo recorrer una lista de objetos y acceder a sus miembros.

He estado intentando esto donde 'datos' es la lista y 'estudiante' una clase.

std::list<Student>::iterator<Student> it;
for(it = data.begin(); it != data.end(); ++it){
    std::cout<<(*it)->name;
}

y obteniendo el siguiente error

error: base operand of ‘->’ has non-pointer type ‘Student’