J'ai une classe de modèle qui compile bien dans VC6. Mais il ne compile pas dans VC9. Pour cela j'ai ajouté le mot-clé "typename" devant un type. Après cela, il compile en vc9 mais pas en VC6. Comment puis-je le faire compiler avec les deux compilateurs.Comment faire pour que cette classe de modèle compile à la fois dans VC6 et VC9
#include <map>
#include <vector>
template <class T1, class T2>
class A
{
public:
std::pair<typename std::vector<std::pair<T1,T2> >::iterator, bool > insert(const std::pair<T1 ,T2> &value_in);
};
template <class T1, class T2>
std::pair< std::vector<std::pair<T1,T2> >::iterator, bool> A<T1,T2>::insert(const std::pair<T1 ,T2>& value_in)
{
std::pair< std::vector<std::pair<T1,T2> >::iterator, bool> b;
return b;
}
void main()
{
A<int, int> a;
a.insert(std::pair<int, int>(0, 0));
}
Le code ci-dessus est compilé dans VC6. Mais pas dans VC9. Le code suivant fonctionne dans VC9, pas dans VC6.
#include <map>
#include <vector>
template <class T1, class T2>
class A
{
public:
std::pair<typename std::vector<std::pair<T1,T2> >::iterator, bool > insert(const std::pair<T1 ,T2> &value_in);
};
template <class T1, class T2>
std::pair<typename std::vector<std::pair<T1,T2> >::iterator, bool> A<T1,T2>::insert(const std::pair<T1 ,T2>& value_in)
{
std::pair< std::vector<std::pair<T1,T2> >::iterator, bool> b;
return b;
}
void main()
{
A<int, int> a;
a.insert(std::pair<int, int>(0, 0));
}
À un certain moment vous obtenez au niveau de sillyness d'écrire du code qui compile à la fois VC9 et Fortran 77. – MSalters