1
我有一個由兩個模板定義的類。定義從模板類到基於其他模板的原始類型的隱式轉換
template<typename A, typename B> my_class {
private:
A value;
public:
operator A() {
return this->value;
}
};
我想定義模板中類和第一種類型之間的隱式轉換,但僅限於模板上特定的第二種類型。由於A
是C++基元類型,因此我無法在該端定義轉換。我試圖std::enable_if
這樣
operator typename std::enable_if<std::is_same<B, specific_B_type>::value, NumT>::type() {
return this->value;
}
,但我得到的編譯錯誤
Error C2833 'operator type' is not a recognized operator or type dimensional_analysis
有沒有辦法做到這一點,而不必定義專門用於B = specific_B_type
整個班級?
不幸的是,我剛剛發現我的答案實際上並沒有工作......看起來,這會禁用整個類實例化,而不僅僅是操作符......你能不接受它,所以我可以刪除它嗎? :) – Knoep
好的,發現另一個(更簡單)的解決方案。這仍然是你想要的嗎? – Knoep
我目前正在使用你給出的第一個解決方案'template :: value,void> :: type>'。它似乎工作,但我可能沒有足夠徹底的測試。你最好的解決方案是什麼?提前致謝! –
mbtg