Bonjour,
Je suis passé de VS2003 à VS2005 et j'ai noté le problème suivant : il semble que de nombreuses choses ont changé dans l'implémentation de la STL.
Depuis la nouvelle version, il n'est plus possible de comparer (pour l'égalité) des itérateurs de liste correspondant à des containers différents.
En effet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
#if _HAS_ITERATOR_DEBUGGING
		void _Compat(const _Myt_iter& _Right) const
			{	// test for compatible iterator pair
			if (this->_Mycont == 0 || this->_Mycont != _Right._Mycont)
				{
				_DEBUG_ERROR("list iterators incompatible");
				_SCL_SECURE_TRAITS_INVALID_ARGUMENT;
				}
			}
En effet, il vérifie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
this->_Mycont != _Right._Mycont
Je cherche une façon de contourner celà facilement.

La raison est que j'ai une classe type conteneur , qui utilise la liste de la stl. (c'est un pool d'objet avec une stratégie d'allocation.)
Les iterateurs de ce conteneur sont implémentés à partir d'un itérateur de liste. Je reproduit le concepte de "pointeur NULL" avec un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
const static iterator DUMMY
(défini dans la class d'itérateur, idem pour le const_iterator). Ces valeurs statiques sont initialisées à partir d'une instance statique vide du conteneur avec begin().
Avec cette nouvelle implémentation de la stl, je ne peux plus comparer mes iterator avec iterator::DUMMY ou mes const_iterator avec const_iterator::DUMMY .

Une idée ?
S.