template : utiliser un multimap

template : utiliser un multimap - C++ - Programmation

Marsh Posté le 06-04-2010 à 20:42:18    

J'utilise rarement les templates, mais j'aimerai écrire une fonction qui utilise en parametre une multimap dont les types sont templatés. Mais rien ne compile :-(
 

Code :
  1. template <typename Key, typename T, typename std::multimap<Key, T> &_mmap>
  2. _mmap::iterator findDataInMultiMap(_mmap &mmap,T &elem,
  3.                                    _mmap::iterator &itStart, bool useItStart = false)
  4. {
  5. ...
  6. }


 
le typename std::multimap<Key, T> &_mmap m'a ete suggere par quelques recherches :  
Avec : erreur sur la ligne 2, _mmap is not a class or namespace
Sans : erreur sur la ligne 1, ‘class std::multimap<Key, T, std::less<_Key>, std::allocator<std::pair<const _Key, _Tp> > >’ is not a valid type for a template constant parameter
 
Tout ceci dans un beau .h tout seul...
Quelle est la syntaxe ?? Je ne trouve rien  :jap:


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 06-04-2010 à 20:42:18   

Reply

Marsh Posté le 06-04-2010 à 21:05:40    

typename std::multimap<Key, T> &_mmap ???

 

Jamais vu ça.

 

Et un bete

 
Code :
  1. template <typename Key, typename T>
  2. typename std::multimap<Key, T>::iterator findDataInMultiMap(_std::multimap<Key, T> &mmap,T &elem,
  3.                                    typename std::multimap<Key, T>::iterator &itStart, bool useItStart = false)
  4. {
  5. ...
  6. }
 


et bon, "hardcoded type in generic code is like magic constants".


Message édité par Joel F le 06-04-2010 à 21:08:07
Reply

Marsh Posté le 06-04-2010 à 21:16:59    

D'accord pour le fait de hardcoder multimap, mais les accesseurs sont particuliers a une multimap : a part faire X surcharges pour supporter plein de conteneurs, que faire ?
De toutes manière, c'est pas très grave dans mon cas  :o


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 06-04-2010 à 21:25:23    

concept et type_traits et SFINAE et hop.

Reply

Marsh Posté le 06-04-2010 à 21:27:52    

Comme je ne connais pas, et que cela pourrait peut etre interesser certains, voici une page pas pire : http://www.boost.org/doc/libs/1_42 [...] round.html
 
Bonne lecture  :o  :love:
Et merci !


---------------
Un blog qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed