标准库标头 <limits>

来自cppreference.com
< cpp‎ | header


 
 
标准库头
 

此标头是类型支持库的一部分。

目录

[编辑]声明

提供查询所有基础数值类型的性质的接口。
(类模板)[编辑]
指示浮点数舍入模式
(枚举)[编辑]
指示浮点数非规格化模式
(枚举)[编辑]

[编辑]概要

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 特化 已添加
close