Je te répond ici même si ce n'est pas vraiment la bonne discussion.
En réalité, toi tu vois les difficultés techniques pour réaliser les choses, mais ce ne sont pas les difficultés qui bloquent le comité de normalisation (tout simplement car il ne s'occupe pas des détails techniques, ils spécifient juste le comportement des modules). La question du "moyen de dire ceci existe et est là-bas" n'entre pas en jeu pour l'introduction dans la norme des modules.
Les questions traités dans les documents relatifs au module sont plutôt sur la syntaxe à adopter pour les nouvelles fonctionnalités, les comportements vis-à-vis des résolutions de noms (étant donné qu'un module indique ce qu'il exporte, on est plus dans une logique de copier/coller ou tout les éléments sont nécessairement pris en compte pour la résolution), le respect de l'ODR (idéalement le système va rendre ce respect plus simple à accomplir), la position des points d'instanciation pour les template et les dépendances cycliques.
Techniquement, clang avait proposé une implémentation pour une proposition de module antérieur. L'idée est la suivante, lorsqu'une unité de compilation est traitée, elle généré un/des fichiers contenant les symboles exportés par l'unité de compilation (schématiquement il y a génération d'un fichier similaire aux headers qu'on écrit aujourd'hui). Ce n'est donc pas si tordu que ça et la compatibilité avec le système actuel est conservé (il y a toujours application du pré-processeur) et aucun impact sur les erreurs détectées ou non à la compilation.
Partager