作者:黑鸽子 | 来源:互联网 | 2023-01-01 17:28
std::numeric_limits
提供2个互斥的常量:
is_integer
:" true
对于所有整数算术类型T
"
is_exact
:" true
对于T
使用精确表示的所有算术类型"
是否存在非精确积分类型的可能性?在这里试图允许什么?
在我所有的模板中,我知道我是否正在处理精确的数字,我用过is_integer
,我现在还需要添加支票is_exact
吗?
1> Edgar Rokjān..:
从cppreference页面:is_exact
笔记
虽然所有基本类型T
std::numeric_limits::is_exact==true
都是整数类型,但库可以定义非整数的精确类型,例如表示分数的有理算术类型.
而且,正如@Holt所提到的,该标准也描述了它:
21.3.4.1 numeric_limits成员[numeric.limits.members]
static constexpr bool is_exact;
如果类型使用精确表示,则为true.所有整数类型都是精确的,但并非所有精确类型都是整数.例如,有理和固定指数表示是精确但不是整数.
标准引用:*"所有整数类型都是精确的,但并非所有确切类型都是整数.例如,有理和固定指数表示是精确但不是整数."*