#define FE_ALL_EXCEPT see below #define FE_DIVBYZERO see below #define FE_INEXACT see below #define FE_INVALID see below #define FE_OVERFLOW see below #define FE_UNDERFLOW see below #define FE_DOWNWARD see below #define FE_TONEAREST see below #define FE_TOWARDZERO see below #define FE_UPWARD see below #define FE_DFL_ENV see below namespace std { // types using fenv_t = object type; using fexcept_t = integer type; // functions int feclearexcept(int except); int fegetexceptflag(fexcept_t* pflag, int except); int feraiseexcept(int except); int fesetexceptflag(const fexcept_t* pflag, int except); int fetestexcept(int except); int fegetround(); int fesetround(int mode); int fegetenv(fenv_t* penv); int feholdexcept(fenv_t* penv); int fesetenv(const fenv_t* penv); int feupdateenv(const fenv_t* penv); }
Содержание и значение заголовка <cfenv> такие же , как заголовок стандартной библиотеки C <fenv.h>. [ Note: Этот международный стандарт не требует реализации для поддержки FENV_ACCESS прагмы; это определяется реализацией ([cpp.pragma]), поддерживается ли прагма. Как следствие, это определяется реализацией, могут ли эти функции использоваться для проверки флагов состояния с плавающей запятой, установки режимов управления с плавающей запятой или работы с нестандартными настройками режима. Если прагма используется для включения управления средой с плавающей запятой, этот международный стандарт не определяет влияние на вычисление с плавающей запятой в константных выражениях. ] — end note
Среда с плавающей запятой имеет thread storage duration. Начальное состояние для среды с плавающей запятой потока - это состояние среды с плавающей запятой того потока, который конструирует соответствующий thread object объект во время создания объекта. [ Note: То есть дочерний поток получает состояние с плавающей запятой родительского потока во время создания дочернего потока. ] — end note