我有一個包含多個模板參數的模板。模板參數互斥
template<typename Appl, typename StoredData>
class Box {
};
的參數的值是互相排斥的: 即對於申請的每一個值,僅存在一組特定的允許StoredData類型。
例如:申請是列表,StoredData - 雙,焦炭 申請的樹,StoredData - 詮釋
有沒有辦法強制在編譯時這個限制? 所以,
Box<List, double> - compiles
Box<List, int> - fails
Box<Tree, int> - compiles
只需要'Appl'類型並使用部分專業化進行自定義映射。 – Xeo 2012-07-18 20:28:26
[Boost.MPL](http://www.boost.org/libs/mpl/)+一個靜態斷言將很好地完成。 – ildjarn 2012-07-18 20:28:39
或者只是將'StoredData'類型作爲'Appl'類型的內部typedef並且執行'typedef typename Apply :: stored_data_type store_type;'。如果你願意,我可以在稍後寫出對這兩個選項的答案。 – Xeo 2012-07-18 20:33:07