Est-ce que je peux simplifier les instructions suivantes? (probablement en utilisant boost::enable_if
).C++ boost enable_if question
J'ai une structure simple de classe - Base
classe de base, Derived1
, Derived2
Hériter de Base
.
J'ai le code suivant:
template <typename Y> struct translator_between<Base, Y> {
typedef some_translator<Base, Y> type;
};
template <typename Y> struct translator_between<Derived1, Y> {
typedef some_translator<Derived1, Y> type;
};
template <typename Y> struct translator_between<Derived2, Y> {
typedef some_translator<Derived2, Y> type;
};
Je veux écrire la même déclaration en utilisant un modèle de spécialisation translator_between
.
Un exemple (pseudo-code) de ce que je veux être en mesure d'écrire:
template <typename Class, typename Y>
ONLY_INSTANTIATE_THIS_TEMPLATE_IF (Class is 'Base' or any derived from 'Base')
struct translator_between<Class, Y> {
typedef some_translator<Class, Y> type;
};
Toute façon d'y parvenir en utilisant boost::enable_if
et boost::is_base_of
?