是否可以使用typedef仅指定模板类的几种类型?
假设有一个这样定义的模板类:
template <typename DOMAIN, typename COUNTERDOMAIN>
class funcType { public:
COUNTERDOMAIN calculate(DOMAIN x);
}
然后代码:
typedef funcType<float, float> floatFuncType
很好用。
但是现在假设我只想指定模板类的第一个参数类型。
我试过了:
typedef funcType<float, typename COUNTERDOMAIN> RealFuncType;
并且
typedef funcType<float, typename COUNTERDOMAIN> RealFuncType<COUNTERDOMAIN>;
没有任何成功。我怎样才能做到这一点?是否可以?
回答
你想要的是一个别名模板。那看起来像
template <typename COUNTERDOMAIN>
using RealFuncType = funcType<float, COUNTERDOMAIN>;
然后你会像这样使用它
RealFuncType<float> foo;
RealFuncType<some_other_type> bar;