【发布时间】:2010-09-26 17:19:54
【问题描述】:
我有什么方法可以简化以下陈述吗? (可能,使用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 实现这一点?
【问题讨论】:
标签: c++ templates boost enable-if