私はそれがその背後にあるものをboost::variant使用しboost::mpl、mpl互換のtypedefを持っていることを知っていますtypes。
単純なtypedefがあるとしましょう:typedef boost::variant<bool, int> Variant;
今、私は別のテンプレート関数を持っています、例えば:
template <typename T> T function() {
// ...
}
Tこの関数は、一部の場合とそうでない場合の2つの場合で異なる動作をするようにし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。
誰かが方法を知っていますか?