我知道boost::variant
使用boost::mpl
背后的东西,并且有一个mpl兼容的typedef types
。
假设我有一个简单的typedef:typedef boost::variant<bool, int> Variant;
现在我有另一个模板功能,让我们说:
template <typename T> T function() {
// ...
}
我希望此功能在两种情况下采取不同的行动:T
Variant::types
的一部分,而不是template <typename T>
typename boost::enable_if<CONDITION, T>::type function() {
// Implementation for the case T is in Variant::types
}
template <typename T>
typename boost::disable_if<CONDITION, T>::type function() {
// Implementation for the case T is ***NOT*** in Variant::types
}
。
显然,我必须做一些像
这样的事情CONDITION
我唯一不知道的是T
。
现在 - 如果Variant::types
是{{1}}的一部分,我认为可以进行编译时查询。
有人知道怎么做?
答案 0 :(得分:7)