私はそれがその背後にあるものを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
。
誰かが方法を知っていますか?