Hello la compagnie,

J'utilise actuellement un container multi_index_container avec un index de type composite_key.
Est-il possible d'utiliser une fonction utilisant des paramètres par défaut?

Je m'explique...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
ordered_non_unique<tag<CONFERENCEAVAILABLE>,	composite_key<
																									std::shared_ptr<Conference>,
																									const_mem_fun<Resource, const MEDIA_STATE &, &Resource::getMediaState>,
																									const_mem_fun<Conference, const unsigned int, &Conference::getNbMembers>,
																									const_mem_fun<Resource, const uint64_t, &Resource::getMediaStateDuration>,
																									const_mem_fun<Resource, const int &, &Resource::getNumber>
																						>
La méthode getMediaStateDuration a pour signature :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
const uint64_t						getMediaStateDuration() const
Je souhaiterais modifier la signature en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
const uint64_t						getMediaStateDuration(const uint64_t &now = _MCU->getTimestamp()) const
Le probleme est que j'obtiens l'erreur : ./includes/conferencemanager.hpp:35:98: error: could not convert template argument ‘&Resource::getMediaStateDuration’ from ‘const uint64_t (Resource::*)(const uint64_t&) const’ {aka ‘const long unsigned int (Resource::*)(const long unsigned int&) const’} to ‘const long unsigned int (Resource::*)() const’

Pour retirer l'erreur, il faut que je supprime la valeur par défaut et que je créé une méthode:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
inline const uint64_t					getMediaStateDuration() const { this->getMediaStateDuration(_MCU->getTimestamp()); }
Est-ce qu'il y a un moyen de supprimer le doublon?