假设我需要创建一个长度恰好为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);
这样的标准类型吗?
答案 0 :(得分:7)
没有类似的标准类型。但是,有boost::int_t,如果您可以接受提升依赖性,它将执行您想要的操作。请注意,语义略有不同,因为boost::int_t
将为您提供最小的整数类型,至少多个位,而不是那么多位。