我有什么办法可以简化以下陈述吗?(可能,使用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
and boost::is_base_of
?