This is an old revision of the document!
Commit
Portabilité
Le code ne compilait plus sous macOS et sous Windows-x86 (MinGW). Ces deux types de compilation ne sont pas testées dans la procédure de batterie et il faut donc régulièrement corriger les sources d'incompatibilité.
Sous macOS, le problème venait des nouveaux templates de Gaetan permettant d'effectuer une intégration (AdaptiveClenshawCurtisIntegratorTemplate
et classes associées). Il y avait plusieurs problèmes dans ces fichiers liés à l'instanciation explicite de certaines instances. J'ai mid le code sous la forme de celui qui compile sans problème mais malgré ça, j'ai dû définir certaines fonctions “inline” pour que clang les retrouve. Je n'ai pas tout compris.
Ceci m'amène à conclure qu'il faut vraiment essayer de limiter l'utilisation des templates au minimum dans Metafor. C'est une vraie source de problème. Le problème des templates Metafor est qu'il s'agit de templates un peu pourris dont une grande partie des fonctions doit être spécialisée pour un argument donné. Autrement dit, le template n'est valable que pour un nombre très restreint de paramètres et en ajouter un nouveau nécessite la réimplémentation de plusieurs fonctions.
Ne faites donc pas de nouveaux templates pour le plaisir d'en faire;