快速提问(实际上是理论)。我有一个变量,其类型根据值而交替,例如:
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/