标准库标头 <limits>
来自cppreference.com
此标头是类型支持库的一部分。
目录 |
[编辑]声明
提供查询所有基础数值类型的性质的接口。 (类模板) | |
指示浮点数舍入模式 (枚举) | |
指示浮点数非规格化模式 (枚举) |
[编辑]概要
namespace std {enum float_round_style;enum float_denorm_style; template<class T>class numeric_limits; template<class T>class numeric_limits<const T>;template<class T>class numeric_limits<volatile T>;template<class T>class numeric_limits<constvolatile T>; template<>class numeric_limits<bool>; template<>class numeric_limits<char>;template<>class numeric_limits<signedchar>;template<>class numeric_limits<unsignedchar>;template<>class numeric_limits<char8_t>;template<>class numeric_limits<char16_t>;template<>class numeric_limits<char32_t>;template<>class numeric_limits<wchar_t>; template<>class numeric_limits<short>;template<>class numeric_limits<int>;template<>class numeric_limits<long>;template<>class numeric_limits<longlong>;template<>class numeric_limits<unsignedshort>;template<>class numeric_limits<unsignedint>;template<>class numeric_limits<unsignedlong>;template<>class numeric_limits<unsignedlonglong>; template<>class numeric_limits<float>;template<>class numeric_limits<double>;template<>class numeric_limits<longdouble>;}
[编辑]枚举 std::float_round_style
namespace std {enum float_round_style { round_indeterminate =-1, round_toward_zero =0, round_to_nearest =1, round_toward_infinity =2, round_toward_neg_infinity =3, };}
[编辑]枚举 std::float_denorm_style
namespace std {enum float_denorm_style { denorm_indeterminate =-1, denorm_absent =0, denorm_present =1};}
[编辑]类模板 std::numeric_limits
template<class T>class numeric_limits {public:staticconstexprbool is_specialized =false; staticconstexpr T min()noexcept{return T();}staticconstexpr T max()noexcept{return T();}staticconstexpr T lowest()noexcept{return T();} staticconstexprint digits =0;staticconstexprint digits10 =0;staticconstexprint max_digits10 =0; staticconstexprbool is_signed =false;staticconstexprbool is_integer =false;staticconstexprbool is_exact =false;staticconstexprint radix =0;staticconstexpr T epsilon()noexcept{return T();}staticconstexpr T round_error()noexcept{return T();} staticconstexprint min_exponent =0;staticconstexprint min_exponent10 =0;staticconstexprint max_exponent =0;staticconstexprint max_exponent10 =0; staticconstexprbool has_infinity =false;staticconstexprbool has_quiet_NaN =false;staticconstexprbool has_signaling_NaN =false;staticconstexpr float_denorm_style has_denorm = denorm_absent;staticconstexprbool has_denorm_loss =false;staticconstexpr T infinity()noexcept{return T();}staticconstexpr T quiet_NaN()noexcept{return T();}staticconstexpr T signaling_NaN()noexcept{return T();}staticconstexpr T denorm_min()noexcept{return T();} staticconstexprbool is_iec559 =false;staticconstexprbool is_bounded =false;staticconstexprbool is_modulo =false; staticconstexprbool traps =false;staticconstexprbool tinyness_before =false;staticconstexpr float_round_style round_style = round_toward_zero;};
[编辑]std::numeric_limits<bool> 特化
template<>class numeric_limits<bool>{public:staticconstexprbool is_specialized =true; staticconstexprbool min()noexcept{returnfalse;}staticconstexprbool max()noexcept{returntrue;}staticconstexprbool lowest()noexcept{returnfalse;} staticconstexprint digits =1;staticconstexprint digits10 =0;staticconstexprint max_digits10 =0; staticconstexprbool is_signed =false;staticconstexprbool is_integer =true;staticconstexprbool is_exact =true;staticconstexprint radix =2;staticconstexprbool epsilon()noexcept{return0;}staticconstexprbool round_error()noexcept{return0;} staticconstexprint min_exponent =0;staticconstexprint min_exponent10 =0;staticconstexprint max_exponent =0;staticconstexprint max_exponent10 =0; staticconstexprbool has_infinity =false;staticconstexprbool has_quiet_NaN =false;staticconstexprbool has_signaling_NaN =false;staticconstexpr float_denorm_style has_denorm = denorm_absent;staticconstexprbool has_denorm_loss =false;staticconstexprbool infinity()noexcept{return0;}staticconstexprbool quiet_NaN()noexcept{return0;}staticconstexprbool signaling_NaN()noexcept{return0;}staticconstexprbool denorm_min()noexcept{return0;} staticconstexprbool is_iec559 =false;staticconstexprbool is_bounded =true;staticconstexprbool is_modulo =false; staticconstexprbool traps =false;staticconstexprbool tinyness_before =false;staticconstexpr float_round_style round_style = round_toward_zero;};
[编辑]缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 184 | C++98 | 未提供 std::numeric_limits<bool> 特化的定义 | 已提供 |
LWG 559 | C++98 | 概要中缺失了对有 cv 限定的算术类型的 std::numeric_limits 特化 | 已添加 |