我在代碼中使用了很多變體,我需要與某些地方的內容進行比較,以測試變體的值。如何在包含類型的變體上使用比較運算符?
例如:
if(equals<int>(aVariant, 0)){
//Something
} else {
//Something else
}
與我已經爲這個目的寫了這個簡單的模板功能:
template<typename V, typename T>
inline bool equals(V& variant, T value){
return boost::get<T>(&variant) && boost::get<T>(variant) == value;
}
這種運作良好,但代碼開始難以閱讀。我更喜歡使用比較操作這樣的:
if(aVariant == 0){
//Something
} else {
//Something else
}
但我不能來與運營商的有效實施。問題是==運算符已經在變體中實現,在編譯時失敗...
有人知道一種方法來實現它嗎?或者一種方法來禁用此限制?即使我必須爲變體中包含的每種可能類型實現一個版本,這也不是問題。
感謝
靜態訪客? – 2012-02-05 21:35:24
@ R.MartinhoFernandes我不認爲他會得到他想要的語法。 – pmr 2012-02-05 21:50:12
哦,我不知道這種情況是由變體開發者明確禁止的。任何人都知道理由是什麼? – 2012-02-05 22:07:19