Sauf que ça fait un moment que les bons compilos C/C++ font de l'optimisation inter-procédurale, et peuvent donc générer des « pseudo » fichiers objets qui contiennent des infos pertinentes pour faire de l'optim au moment de l'édition des liens. Alors certes, parfois ça mène au compilateur qui t'explique que y'a beaucoup trop de choses à analyser, et du coup il s'arrête ou bien il continue en faisant de la compilation uniquement par module. Mais l'IPC est censée être utilisée uniquement pour ce qui en vaut la peine (noyau de calcul très utilisé à plusieurs endroits d'un code, bibliothèque de code optimisée aux petits oignons, etc.).
De plus en ce qui concerne les templates, à cause de la façon dont ils fonctionnent en C++, s'il s'agit d'un template de classe, alors de toute manière il est forcément inclus en entier dans le fichier qui l'utilise et le compilateur a donc toutes les informations nécessaires pour optimiser à fond.
[^] # Re: Encore le type Null...
Posté par lasher . En réponse à la dépêche Dart va‐t‐il remplacer JavaScript comme langage dans les navigateurs ?. Évalué à 2.
Sauf que ça fait un moment que les bons compilos C/C++ font de l'optimisation inter-procédurale, et peuvent donc générer des « pseudo » fichiers objets qui contiennent des infos pertinentes pour faire de l'optim au moment de l'édition des liens. Alors certes, parfois ça mène au compilateur qui t'explique que y'a beaucoup trop de choses à analyser, et du coup il s'arrête ou bien il continue en faisant de la compilation uniquement par module. Mais l'IPC est censée être utilisée uniquement pour ce qui en vaut la peine (noyau de calcul très utilisé à plusieurs endroits d'un code, bibliothèque de code optimisée aux petits oignons, etc.).
De plus en ce qui concerne les templates, à cause de la façon dont ils fonctionnent en C++, s'il s'agit d'un template de classe, alors de toute manière il est forcément inclus en entier dans le fichier qui l'utilise et le compilateur a donc toutes les informations nécessaires pour optimiser à fond.