我有一个模板:
template<unsigned int N> struct IntN;
template <> struct IntN< 8> {
typedef uint8_t type;
};
template <> struct IntN<16> {
typedef uint16_t type;
};
我主要通过这样做来初始化和替换:
IntN< 8>::type c;
这似乎有效,但是,当我将值存储在变量中时,它不起作用,并且出现以下错误:
错误:“int”类型的非类型模板参数不是整数常量表达式
以下是代码示例:
template<unsigned int N> struct IntN;
template <> struct IntN< 8> {
typedef uint8_t type;
};
template <> struct IntN<16> {
typedef uint16_t type;
};
int main(int argc, char *argv[]) {
int foo = 8;
IntN<foo>::type c;
}
有没有人有任何想法?谢谢