我有一个模板类,说:
template<class T>
class someClient
{
void someCallbackA() {foo_->onA();}
void someCallbackB() {foo_->onB();}
private:
T* foo_;
};
我可以用一堆支持onA
andonB
接口的不同类型 T 来实例化它。我碰巧有一种情况,T
我使用的几种不同类型中的两种需要控制一个特定的行为,someClient
所以我需要doBar()
为这两种类型添加一些功能(调用它们Edge1
和Edge2
)。someClient
然后我想要调用一部分代码,foo_->doBar()
但当类型没有时不会中断foo_
。有没有一种方法可以boost::enable_if
让 a someClient::doBar()
which 只调用这两种类型,但不存在,或者foo_->doBar()
如果类型不存在,则扩展为空?Edge1
Edge2
我的思路是:
template <class T, enable_if<mpl_or<is_same<T,Edge1>, is_same<T,Edge2> > >
someClient<T>::doBar() {foo_->doBar();}