Je suis en train de compiler le code suivant sur Linux en utilisant gcc 4.2:type/décalage de valeur dans le modèle C++ déclaration de classe
#include <map>
#include <list>
template<typename T>
class A
{
...
private:
std::map<const T, std::list<std::pair<T, long int> >::iterator> lookup_map_;
std::list<std::pair<T, long int> > order_list_;
};
Quand je compile cette classe je reçois le message suivant de gcc:
error: type/value mismatch at argument 2 in template parameter list for ‘template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map’
error: expected a type, got ‘std::list<std::pair<const T, long int>,std::allocator<std::pair<const T, long int> > >::iterator’
error: template argument 4 is invalid
J'ai supprimé les noms de fichier et les numéros de ligne, mais ils se réfèrent tous à la ligne déclarant la carte.
Lorsque je remplace la paire dans ces expressions avec un int ou un type concret, il compile bien. Quelqu'un peut-il m'expliquer ce que je fais de mal?