名前空間
変種
操作

std::numeric_limits<T>::traps

提供: cppreference.com
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ(C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
型サポート
型の性質
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(C++20未満)
(C++11)(C++20で非推奨)
(C++11)
型特性定数
メタ関数
(C++17)
定数評価文脈
サポートされている操作
関係と性質の問い合わせ
型変更
型変換
(C++11)
(C++11)
(C++17)
(C++11)(C++20未満)(C++17)
 
 
staticconstbool traps;
(C++11未満)
staticconstexprbool traps;
(C++11以上)

std::numeric_limits<T>::traps の値は、算術演算の引数として使用された場合にトラップを生成するような値が少なくともひとつはあるすべての算術型 T に対して true になります。

[編集]標準の特殊化

Tstd::numeric_limits<T>::traps の値
/* 非特殊化 */ false
boolfalse
char 通常は true
signedchar 通常は true
unsignedchar 通常は true
wchar_t 通常は true
char8_t 通常は true
char16_t 通常は true
char32_t 通常は true
short 通常は true
unsignedshort 通常は true
int 通常は true
unsignedint 通常は true
long 通常は true
unsignedlong 通常は true
longlong 通常は true
unsignedlonglong 通常は true
float 通常は false
double 通常は false
longdouble 通常は 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]
close