2010-06-07 12 views
3

En métaprogrammation, le nombre de classes augmente assez rapidement. Est-ce que le nombre maximum de classes que le compilateur moderne permet, par exemple g ++, est de se préoccuper de quelque chose?Nombre maximal de classes du compilateur C++

Merci

+15

Si le boost ne l'a pas encore atteint, j'en doute ... – Thanatos

+0

Il est probable qu'il n'y ait pas de limite codée en dur autre que la quantité de RAM de votre boîte de développement. –

Répondre

2

Je suppose que cette question est la meilleure réponse par la norme publiée par le comité du C. Mais en regardant this place, je ne peux pas voir de limite supérieure sur le nombre de classes bien qu'il y ait une limite de quantité minimum sur beaucoup d'articles (dire au moins le nombre donné d'éléments de chaque type devrait être supporté par le compilateur mais ce n'est pas un limite contraignante). Si votre compilateur peut supporter ces limites minimum, vous devriez être OK.

Mais quels sont les facteurs qui influent sur la limite supérieure du nombre de classes? Je serais heureux de savoir si un gourou du compilateur peut répondre à cette question.

+3

Les quantités d'implémentation ne sont pas vraiment des minimums difficiles; ils ne sont que des quantités minimales recommandées; Si une implémentation ne satisfait pas au minimum pour quelque chose, elle doit documenter la quantité qu'elle peut supporter. –

+0

Vous m'avez, j'aurais dû lire une deuxième fois pour ne pas l'avoir manqué. Quoi qu'il en soit, corrigé la réponse pour refléter ce point. – vpit3833

0

Étant donné que les arbres d'analyse du compilateur sont juste que — arbres — Je pense qu'il est raisonnable de supposer que les limites du compilateur sont une question de complexité globale plutôt que le nombre d'une sorte d'entité.

Bien sûr, quelqu'un avec la source devant eux peut donner une réponse plus précise :)

1

Si vous exécutez sur un ordinateur 64 bits, il est peu probable que vous ne rencontriez aucune limite dans les compilateurs modernes. Les informations de type sont susceptibles d'être allouées dynamiquement, plutôt que d'être placées dans un conteneur de taille limitée codé en dur.

Je peux penser à certains systèmes qui pourraient être difficiles à compiler dans un espace mémoire de 2 Go comme vous le feriez pour un ordinateur 32 bits. Cependant, même si j'ai travaillé sur de grandes bases de code C++ avec beaucoup de métaprogrammation de templates, cela n'a pas vraiment posé de problème en pratique. La lenteur de la compilation et l'ennui du débogage vous tueront probablement avant que la taille de la mémoire ne le fasse :-)

Questions connexes