Haber me explico un poco ,tengo este operador ,recibe un objeto de la clase articulo y a su vez esta clase tiene un método Articulo::Autores() que devuelve un set de punteros a autores, lo extraño es que si el set tiene 2 elementos el bucle solo itera una vez...y por tanto me muestra solo un elemento cuando llamo al operador,pero si tiene 1 o 3 elementos o mas no hay problema
ostream& operator<<(ostream& os,const Articulo& art){
cout<<"nnº de elementos = "<<art.autores().size();//esta linea es para saber cuantos elementos tiene..y tiene 2!!!
bool poner_coma=false;
os<<"["<<art.referencia()<<"] "<<"""<<art.titulo()<<"", de ";
for(auto it=art.autores().begin();it!=art.autores().end();++it){
if(poner_coma)
os<<", ";
os<<(*it)->apellidos();
if(!poner_coma)
poner_coma=true;
}
os<<". "<<art.f_publi().anno()<<"."<<" "<<fixed << std::setprecision(2)<<art.precio()<<" €";
art.imp_esp(os);
return os;
}