7
在C++中,如果我有一个模板参数,我该如何干净地专门化一个默认参数?例如,考虑以下因素:模板参数的默认参数是否可以专用?
template <class Key, class Value = int > class Association;
如果我想Value
,而不是默认float
为Special
类?有没有一种方法实际上专门化类Association
,这样如果密钥是Special
该值默认为float
?
我想做到这一点的一种方式将与性状:
template <class Key> struct Traits {
typedef int defaultValue;
}
template<> struct Traits<Special> {
typedef float defaultValue;
}
template <class Key, class Value = Traits<Key>::defaultValue> class Association;
是否有这样做的更简洁的方式,是不是这样参与进来,会更容易显示,int是正常的默认在协会定义的地方?
我认为应该有一种方式来实现你想要的模板的别名是什么('using'),但我没有时间来想办法 – sehe