J'ai recherché le projet de texte standard 2015 et n'ai trouvé aucune occurrence de FENV_ACCESS. http://cppreference.com n'a rien à ce sujet.
Cependant, http://cplusplus.com mentionne (puisque ce n'est pas dans la norme, je pense que nous devons supposer que cette information est consultatif au mieux):
http://www.cplusplus.com/reference/cfenv/FENV_ACCESS/
Je cite cplusplus.com: (Souligné par l'auteur Si ce paramètre est activé, le programme informe le compilateur qu'il peut accéder à l'environnement à virgule flottante pour tester ses indicateurs d'état (exceptions) ou s'exécuter sous des modes de contrôle autres que celui par défaut. Si cette option est désactivée, le compilateur peut effectuer certaines optimisations qui peuvent subvertir ces tests et changements de mode, et accéder ainsi à l'environnement à virgule flottante dans les cas décrits ci-dessus, provoque un comportement indéfini. Si l'état de ce pragma est activé ou désactivé par défaut, cela dépend des paramètres du compilateur et de l'implémentation de la bibliothèque. Etant donné le manque de clarté troublant, je voudrais éviter son utilisation si possible.
Comme toujours, si l'utilisation était inévitable, je voudrais l'encapsuler dans une classe que je peux spécialiser et tester pour chaque architecture.
Ensuite, documentez l'existence de cette classe et les problèmes qu'elle peut provoquer si l'implémentation du compilateur, de l'environnement ou de la bibliothèque est mise à niveau.
Mise à jour:
Il y a une très brève mention de l'en-tête dans le C++ standard:
§ 26.3 L'environnement à virgule flottante [cfenv]
...
2 L'en-tête définit toutes les fonctions, tous les types et toutes les macros comme l'article 7.6 de la norme C.
Mise à jour:
Informations complémentaires ici: http://en.cppreference.com/w/cpp/preprocessor/impl
Ma lecture est que le pragma est défini par la norme C11, et non la norme C++ 11. Par conséquent, l'utilisation dans un programme C++ est strictement implémentée/non définie.
Cela va nécessiter de retrousser vos manches et écrire et soumettre un correctif pour LLVM. Sympa quand l'open source vous permet de réparer ces choses. –
@HansPassant que voulez-vous dire? Comment un correctif pour LLVM peut-il résoudre un problème dans Standard? – Ruslan