N'est-ce pas que la conception d'un bon langage de programmation est censée maintenir un "foo-table" qui prend en charge cette situation ?
C'est le cas? Pourquoi? Un bon langage de programmation est celui qui vous permet de résoudre des problèmes, ni plus ni moins. Un ramasse-miettes abaisse certainement la barrière d'entrée, mais il enlève également le contrôle au programmeur, ce qui peut poser problème dans certains cas. Certes, sur un ordinateur quad-core moderne de 2,5 GHz, et avec les ramasse-miettes avancés et efficaces d'aujourd'hui, nous pouvons nous en accommoder. Mais C++ devait fonctionner avec un matériel beaucoup plus limité, allant des ordinateurs de bureau avec un énorme 16 Mo de RAM aux plateformes embarquées avec 16 Ko, et tout ce qu'il y a entre les deux. Il doit être utilisable dans du code en temps réel, où vous ne pouvez pas simplement mettre en pause le programme pendant 0,5 seconde pour exécuter une collecte de déchets.
C++ n'est pas simplement conçu pour être le langage utilisé sur les ordinateurs de bureau. Il est censé être utilisable partout, sur des systèmes à mémoire limitée, dans des scénarios en temps réel stricts, sur de grands supercalculateurs et partout ailleurs.
Le principe directeur de C++ est "vous ne payez pas pour ce que vous n'utilisez pas". Si vous ne voulez pas d'un ramasse-miettes, vous ne devriez pas avoir à payer le (gros) prix d'un tel outil.
Il existe des techniques très puissantes pour gérer la mémoire en C++ et éviter les fuites de mémoire, même sans ramasse-miettes. Si un ramasse-miettes était le seul moyen d'éviter les fuites de mémoire, alors il y aurait un argument solide en faveur de son ajout au langage. Mais ce n'est pas le cas. Vous devez simplement apprendre à gérer correctement la mémoire vous-même en C++.