Récemment, le compilateur macOS a changé du jour au lendemain (Xcode 8 ⇒ Xcode 9) et soudainement, il n'était plus possible de compiler certains templates de Metafor.
Le problème vient des fonctions friend
de classes de NURBS++ qui ne sont pas/plus reconnues et donc qui ne peuvent pas accéder aux variables privées des classes en question.
Vu que NURBS++ me casse les pieds à chaque changement de compilateur, j'y suis allé de manière radicale cette fois-ci: j'ai mis les variables de la classe problématique en public
. C'est un peu radical mais vu qu'on aimerait se débarrasser à terme de cette vieille bibliothèque mal implémentée, ça peut être toléré.
Autre truc qui ne compile plus avec le nouveau clang d'apple:
void FunctionBasedHyperPk2Material::updatePrmat() { if(getHyperFunction()>0) getHyperFunction()->updateProp(getLocalState1()); }
Autrement dit l'opérateur de comparaison entre un pointeur de fonction et un entier. Dans un certain sens c'est très rassurant. Bref, ceci montre encore une fois l'intérêt d'être compatible avec plusieurs types de machines.
J'ai installé le Parallel Studio XE 2018 sur spirou. pour rappel, nous avons acheté une version du compilateur intel pour tester ce compilateur lors de la batterie de test. On utilise donc maintenant le icpc 18.0.0 et les MKL et TBB 2018.
— boman 2017/10/06 08:04