我有一个包含多个模板参数的模板。模板参数互斥
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