Есть ли способ упростить следующие утверждения? (возможно, с использованием boost::enable_if
) .
У меня есть простая структура классов - Base
базовый класс, Derived1
, Derived2
наследуют от Base
.
У меня есть следующий код:
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;
};
Я хочу написать то же утверждение, используя одну специализацию шаблона translator_between
.
Пример (псевдокод) того, что я хочу написать:
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;
};
Любой способ добиться этого, используя boost::enable_if
и boost::is_base_of
?