j'ai une liste de class Citoyen que j'aimerai trier selon un critère par example leur id

donc j'ai une liste de Citoyen :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
list<unique_ptr<Citoyen>> ListeDePatient;
je fais quelque insert dans ma list :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ListeDePatient.push_back(unique_ptr<Citoyen>(new Citoyen(3,"bob","2012")));
	ListeDePatient.push_back(unique_ptr<Citoyen>(new Citoyen(1,"roger","2013")));
	ListeDePatient.push_back(unique_ptr<Citoyen>(new Citoyen(2,"noob","2011")));
J'aimerai la trier selon le id, donc je me suis fais une fonction qui retourne le citoyen ayant le plus grand id :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
bool NasGreater(unique_ptr<Citoyen> a, unique_ptr<Citoyen> b)
{
	if(a._Myptr->GetNas() == b._Myptr->GetNas())
		return a._Myptr->GetNas() < b._Myptr->GetNas();
 
	return a._Myptr->GetNas() > b._Myptr->GetNas();
}
et je trie ma liste :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sort(ListeDePatient.begin(),ListeDePatient.end(),NasGreater);
J'obtient une erreur lors à sort : impossible de déduire l'Argument modèle pour std::move_iterator<_RanIt> ...

Je comprend pas vraiment l'erreur l'iterator n'est pas capable de parcourir la liste a cause qu'il ne sait pas c'est quoi comme liste ?