2015 年の標準ドラフト テキストを検索したところ、FENV_ACCESS の出現は見つかりませんでした。http://cppreference.comにもそれについて何もありません。
ただし、http://cplusplus.comでは言及されています (標準に含まれていないため、これはせいぜい助言情報であると想定する必要があると思います)。
http://www.cplusplus.com/reference/cfenv/FENV_ACCESS/
cplusplus.com からの引用: (強調は私のものです)
on に設定すると、プログラムは、浮動小数点環境にアクセスしてステータス フラグ (例外) をテストするか、デフォルト以外の制御モードで実行する可能性があることをコンパイラに通知します。
オフに設定すると、コンパイラは特定の最適化を実行する可能性があり、これらのテストとモードの変更を覆す可能性があるため、上記のケースで浮動小数点環境にアクセスすると、未定義の動作が発生します。
このプラグマのデフォルトの状態がオンかオフかは、コンパイラの設定とライブラリの実装によって異なります。
不安なほどの明確さの欠如を考えると、可能であればその使用を避けたいと思います.
いつものように、使用が避けられない場合は、アーキテクチャごとに特化してテストできる 1 つのクラスにカプセル化する必要があります。
次に、このクラスの存在と、コンパイラ、環境、またはライブラリの実装がアップグレードされた場合に発生する可能性のある問題を文書化します。
アップデート:
C++ 標準には、ヘッダーに関する非常に簡単な説明があります。
§ 26.3 浮動小数点環境 [cfenv]
...
2 ヘッダーは、C 標準の 7.6 節と同じように、すべての関数、型、およびマクロを定義します。
アップデート:
詳細はこちら: http://en.cppreference.com/w/cpp/preprocessor/impl
これについての私の解釈は、プラグマが C++11 標準ではなく、C11 標準によって定義されているということです。したがって、c++ プログラムでの使用は厳密に実装/未定義です。