名前空間
変種
操作

std::numeric_limits::traps

提供: cppreference.com
 
 
 
型サポート
型プロトタイプ
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(C++20未満)
(C++11)(C++20で非推奨)
(C++11)
型特性定数
メタ関数
(C++17)
エンディアン
(C++20)
定数評価文脈
サポートされている操作
関係と性質の問い合わせ
(C++11)
(C++11)
型変更
(C++11)(C++11)(C++11)
型変換
(C++11)
(C++11)
(C++17)
(C++11)(C++20未満)(C++17)
 
 
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 の値
/* 非特殊化 */ 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

[編集] ノート

ほとんどのプラットフォームでは整数のゼロ除算は常にトラップを生成し、 std::numeric_limits<T>::traps は値 0 をサポートするすべての整数型に対して true になっています。 例外は bool 型です。 false による除算は bool から int への整数拡張によってトラップを生成しますが、トラップを発生するのは値 0 の int です。 0 は bool 型の値ではありません。

ほとんどのプラットフォームでは浮動小数点例外は実行時に有効化したり無効化したりでき (Linux の feenableexcept() や Windows の _controlfp など)、その場合、浮動小数点型に対する std::numeric_limits<T>::traps の値はプログラム開始時の浮動小数点トラップ機能の状態を反映します。 つまり、ほとんどの現代的なシステムでは false です。 例外は DEC Alpha であり、 -ieee を付けずにコンパイルした場合は true になります。

[編集] 関連項目

浮動小数点環境
丸めの前に小ささを検出する浮動小数点型を識別します
(パブリック静的メンバ定数) [edit]
精度の損失を不正確な結果ではなく非正規化損失として検出する浮動小数点型を識別します
(パブリック静的メンバ定数) [edit]