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