在64位操作系统上,C++中的Fundamental types大小在1到8(可能是16)之间。这意味着它们在内存中占用的位数不高于128位,即uint8_t
中适合的位数。
现在,假设我写了一些函数,它需要这样的位数。例如,假设它是
template <typename T>
inline void clear_bit(T& x, magic_type bit_index ) {
static_assert(std::is_fundamental_v<T>, "Go away.");
x = x & ~(T{1} << bit_index);
}
我想知道如何使用magic_type
:它应该是一个uint8_t
吗?或者它应该只是一个整数,因为我无论如何都需要检查有效性,即使对于uint8_t
情况也是如此,而且int
是一种更“自然”的数字类型?
为了让这个问题更少涉及你的个人观点:通常被认为是更地道的选择之一吗?如果不是,你能为这两个选择找到足够好的理由吗?或者建议第三个?
https://stackoverflow.com/questions/53714929
复制相似问题