我有一個模板:模板 - 傳遞變量,而不是價值
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;
這似乎是工作,但是,當我存儲一個變量的值,它不,我得到以下錯誤:
error: non-type template argument of type 'int' is not an integral constant expression
這是一個代碼示例:
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;
}
有沒有人有任何想法?謝謝
嘿,就是這樣!但我在程序中的其他位置設置了值,因此它不能保持不變。任何想法? – Phorce
@ user1326876如果它的值是運行時確定的,那麼您無法將其作爲模板參數傳遞。模板在編譯時被實例化 –