我需要在编译时找出可以表示特定数字的最小无符号整数类型。像这样的东西...
//////////////////////////////////////////////////////////////////////////
template<size_t Bits>
struct uint_least{};
template<>
struct uint_least<8>{ typedef std::uint8_t type; };
template<>
struct uint_least<16>{ typedef std::uint16_t type; };
//////////////////////////////////////////////////////////////////////////
template<size_t max>
struct uint_least_bits
{
static const size_t value = 14; // just a placeholder
};
//////////////////////////////////////////////////////////////////////////
template<size_t max>
class A
{
typedef typename uint_least<uint_least_bits<max>::value>::type underlying_type;
underlying_type m_X;
};
uint_least
旨在为您提供至少Bits
大的最小无符号整数类型,它应该适用于高达 64 的任何值(不仅仅是 8、16、32、64,还有 1、4、13 等)。
uint_least_bits
旨在为您提供表示max
.
- 我该如何实施
uint_least
? - 我该如何实施
uint_least_bits
? - 应该
bits
、、min
和max
是什么类型?如果答案是模板类型,我该如何防范无效输入?
特征的确切结构并不重要。随意废弃我提供的内容。我只需要提供一个数字并取回可以容纳它的最小无符号整数类型。