我想創建一個具有使用作爲模板參數提供的值進行初始化的靜態成員的輕量級模板類(僅允許enum
)。具有枚舉的模板無法使用POD模板參數值初始化其成員
下面的代碼不建說
error: wrong number of template arguments (1, should be 2)
error: provided for ‘template<field_id field_value,
inner_type_id innter_type_value> struct node’
error: template declaration of ‘field_id m_field_id’
這個問題似乎是第一個模板參數。如果我刪除'field_value'和'inneer_type_value'仍然沒有建立說不匹配的錯誤。
你能幫我嗎? 感謝AFG
enum field_id{ FIELD_ID_1, FIELD_I_2 };
enum inner_type_id{ INN_ID_1, INN_ID_2 };
template< enum field_id field_value
, enum inner_type_id inner_type_value
>struct node{
static field_id m_field_id;
};
template<
enum field_id field_value
,enum inner_type_id inner_type_value
>
enum field_id node<
enum field_id field_value
,enum inner_type_id inner_type_value
>::m_field_id=field_value;
int main(){
node<FIELD_ID_1,INN_ID_1> obj;
assert(obj::m_field_value == FIELD_ID);
}
我也tyring另一種不同的方法,但我仍然不明白這一點
template< typename T1, typename T2 >
struct node;
template<>
struct node< enum field_id=FIELD_ID_1, enum inner_type_id=INN_ID_1>{
static enum field_id m_field_id;
};
note<
enum field_id=FIELD_ID_1
,enum inner_type_id=INN_ID_1
>::m_field_id=FIELD_ID1;
嘿!只需添加評論!當我今天早上看了下面的一個迴應,我驚訝地發現一個關於爲什麼'enum'不應該用作模板參數的很好的解釋令人驚訝,它很棒,但被海報刪除了!多麼可憐!我感謝大家! –