std::numeric_limits<T>::traps
< cpp | types | numeric limits
static const bool traps; |
(C++11 前) | |
static constexpr bool traps; |
(C++11 起) | |
std::numeric_limits<T>::traps 的值,对所有至少有一个若用作算术运算参数则会生成陷阱的值的算术类型 T
为 true 。
标准特化
T
|
std::numeric_limits<T>::traps 的值 |
/* non-specialized */ | false |
bool | false |
char | 通常为 true |
signed char | 通常为 true |
unsigned char | 通常为 true |
wchar_t | 通常为 true |
char8_t | 通常为 true |
char16_t | 通常为 true |
char32_t | 通常为 true |
short | 通常为 true |
unsigned short | 通常为 true |
int | 通常为 true |
unsigned int | 通常为 true |
long | 通常为 true |
unsigned long | 通常为 true |
long long | 通常为 true |
unsigned long long | 通常为 true |
float | 通常为 false |
double | 通常为 false |
long double | 通常为 false |
注意
大多数平台上,除以零始终会产生陷阱,而对所有支持值 0 的整数类型, std::numeric_limits<T>::traps 为 true 。例外是类型 bool :即使除以 false 因为从 bool 整数提升到 int 而产生陷阱,这也是零值的 int 所产生的陷阱。零不是 bool 的值。
大多数平台上,浮点异常可以在运行时开关(例如 Linux 上的 feenableexcept() 或 Windows 上的 _controlfp ),该情况下 std::numeric_limits<T>::traps 对浮点类型的值反映程序启动时的浮点陷阱设施,它在大多数现代系统上为 false 。 DEC Alpha 程序可以是例外,若不以 -ieee
编译程序,则为 true 。
参阅
浮点环境 | |
[静态] |
鉴别检测舍入前是否非正规的浮点类型 (公开静态成员常量) |
[静态] |
鉴别浮点类型是否检测精度损失为非正规损失,而非不准确结果 (公开静态成员常量) |