所以这个问题出现了,在进行一些简单的编码时,请考虑以下内容;
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 构建自己的库