Voici une très simple, sans raison technique: Il n'est pas requis par la norme, et tout futur changement va casser la compatibilité avec des existants, le code compilé pour aucune raison.
Le vent de l'horloge datant du début des années 2000, lors de la transition entre la GCC et GCC 3, et plus tard, lors des révisions mineures de GCC 3. De nombreux projets, j'ai travaillé ont été destinés à être compatible binaire; on ne pouvait pas exiger de l'utilisateur de recompiler nos programmes ou plugins, et ne pouvait-on être certain de la version de GCC ils ont été compilés sur ou de la version de la STL ils ont été compilées avec.
La solution: ne pas utiliser la STL. Nous avions dans la maison des chaînes, des vecteurs, et essaie plutôt que d'utiliser la STL. La solution à la dépendance de l'enfer introduit par ostensiblement une partie standard de la langue était si grande, que nous avons abandonné. Pas dans un ou deux projets.
Ce problème a en grande partie disparu, heureusement, et les bibliothèques comme boost se sont engagés à fournir incluent uniquement les versions de la conteneurs STL. Dans GCC 4, je vois pas de problème avec l'utilisation standard des conteneurs STL, et en effet, la compatibilité binaire est beaucoup plus facile, en grande partie en raison des efforts de normalisation.
Mais votre changement d'introduire un nouveau, non-dits, de dépendance
Supposons que demain, une nouvelle structure de données qui vient de sortir, ce qui a beaucoup beats rouge noir des arbres, mais ne fournit pas la garantie que certaines spécialisé itérateurs sont disponibles. Une telle mise en œuvre, qui était très populaire il ya quelques années a été le skip liste, qui offre les mêmes garanties à une beaucoup plus petite empreinte mémoire. Le skip liste ne semblent pas à la casserole, mais une autre structure de données pourrait très bien. Ma préférence personnelle est d'utiliser tente, qui offrent beaucoup plus de performances du cache et plus robuste algorithmique de la performance; leur itérateurs serait sensiblement différent d'un rouge noir des arbres, si quelqu'un en à la bibliothèque libstdc++ décider que ces structures offrent de meilleurs tout autour de performance pour la plupart des usages.
En suivant la norme strictement binaire rétro-compatibilité peut être maintenue même dans le visage de données des modifications de la structure. C'est une Bonne Chose (TM) pour une bibliothèque destinée à être utilisée de façon dynamique. Pour celui qui serait utilisée de manière statique, comme le coup de pouce de Conteneurs de la bibliothèque, je ne voudrais pas bat un œil si ces optimisations ont été bien mis en œuvre et bien utilisé.
Mais pour une bibliothèque dynamique comme libstdc++, binaire rétro-compatibilité est beaucoup plus important.