是否有标准整数类型,其大小为模板参数?

时间:2015-07-21 13:50:01

标签: c++ templates integer

假设我需要创建一个长度恰好为layout_weight位的成员的模板,其中N是模板参数。我当然可以定义类似这样的东西

N

然后在我的模板中使用它,例如功能:

#include <cstdint>
template<int N>
struct sized_uint {};
template<> struct sized_uint<8> { typedef uint8_t type; };
template<> struct sized_uint<16> { typedef uint16_t type; };
template<> struct sized_uint<32> { typedef uint32_t type; };
template<> struct sized_uint<64> { typedef uint64_t type; };

但是在任何版本的C ++中都有像上面定义的template<int N> void myfunc(typename sized_uint<N>::type); 这样的标准类型吗?

1 个答案:

答案 0 :(得分:7)

没有类似的标准类型。但是,有boost::int_t,如果您可以接受提升依赖性,它将执行您想要的操作。请注意,语义略有不同,因为boost::int_t将为您提供最小的整数类型,至少多个位,而不是那么多位。