隨着模板號碼包裝結構模板參數類依賴於構造
template <typename T>
Num<0> id(T x) { return Num<0>(); }
Num<1> id(int x) { return Num<1>(); }
Num<2> id(double x) { return Num<2>(); }
Num<3> id(char x) { return Num<3>(); }
我可以使用decltype
和初始化一個Zod
結構的m_i
構件的id
返回參數的類型:
template <typename T>
struct Zod {
Zod(T x) { m_i = identity<decltype(id(x))>::type::n; }
int m_i;
};
不過,我真的很想對於Zod
結構有初始化到m_i
被設置爲值的第二整數模板參數。
template <typename T, int I = ?>
struct Zod { ... }
這似乎可能的,如在identity
/decltype
表達式計算爲一個編譯時間常數;例如,這是在全局範圍內罰款:
char c;
static const int g = identity<decltype(id(c))>::type::n;
的問題是,在構造函數的參數x
中未提供Zod
的模板聲明的範圍。可以做到嗎?
我想使'm_i'靜態const不是一個選項?你想要什麼來實現的,出於好奇? – 2011-04-07 22:14:31