Permettez-moi de commencer par expliquer ce que je veux dire par "magie". Je vais utiliser deux exemples de Java:
- Chaque classe hérite (directement ou indirectement) l'
Object
classe. - La surcharge d'opérateur n'est pas pris en charge par Java, mais l'
+
opérateur est défini pourString
objets.
Cela signifie qu'il est impossible de faire une mise en œuvre de l' Object
et String
classes dans le plus pur(*) de Java. Maintenant, c'est ce que je veux dire avec "magic": pour une mise en œuvre de ces classes, vous aurez besoin d'un soutien spécial du compilateur.
Ce que j'ai toujours aimé le C++, c'est que, autant que je sache, il n'existe pas de "magie" dans la STL, c'est à dire qu'il est possible de mettre en œuvre la STL en C++pur.
Maintenant, ma question est: est-ce vrai? Ou il y a des parties de la STL qui ne peuvent pas être mis en œuvre en C++ pur et ont besoin d'une "magie"/spéciale prise en charge du compilateur?
(*) Avec "pure", je veux dire sans l'aide des bibliothèques de classe.