【发布时间】:2013-08-02 23:35:48
【问题描述】:
所以这个问题出现了,在做一些简单的编码时,考虑以下;
for(unsigned int x=0x00000000; x<0xFFFFFFFF; x++)
{
// ...
}
上面的代码在假设'sizeof(unsigned int) >= 4'的情况下按预期工作,但是我们知道,在某些平台上这可能不是真的,因此我对类似的东西很感兴趣;
for(RangeBasedInt<0x00000000, 0xFFFFFFFF>::type x=0x00000000; x<0xFFFFFFFF; x++)
{
// ...
}
其中 'RangeInt' 是一个模板,'type' 是最小的整数类型,其大小足以容纳从 MINIMUM (0x00000000) 到 MAXIMUM (0xFFFFFFFF) 的值范围;
template<int MINIMUM, int MAXIMUM>
struct RangeBasedInt
{
// Type based upon MINIMUM and MAXIMUM
typedef /* MAGIC */ type;
};
所以问题很简单:
- 这是在标准库的某个地方实现的吗?
- 如果没有,是否有实现此功能的库,或者我必须基于 std::numeric_limits 构建自己的库
【问题讨论】:
标签: c++11 long-integer numeric-limits