快速提问(实际上是理论)。我有一个变量,其类型根据值而交替,例如:

8, 16, 24, 32


我通过执行以下操作来定义它:

uint8_t = 10; // example


但是,此刻我要切换“数字”并重复代码,但声明整数值的方式有所不同。如您所知,这是很多浪费的代码,我想更有效地编写代码。

我想知道是否有可能根据值分配变量的模板? (如果有意义)

if value == 8
  uint8_t = foo;
elseif value == 16
  uint32_t
...


有什么想法或建议吗?谢谢 :)

最佳答案

像这样:

template <unsigned int N> struct IntN;

template <> struct IntN< 8> { typedef  uint8_t type; };
template <> struct IntN<16> { typedef uint16_t type; };
template <> struct IntN<32> { typedef uint32_t type; };
template <> struct IntN<64> { typedef uint64_t type; };

IntN<8>::type x = 5;


template参数必须是一个常量表达式。

关于c++ - 模板-可以做到吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12352265/

10-11 12:20