在 C++ 中, 如果我有一个模板参数, 我如何才能对默认参数进行清晰的专业化? 例如, 考虑 :
template <class Key, class Value = int > class Association;
如果我要 value
默认为 float
类的 特殊
默认为
special
? 如果Key是 special
,那么数值默认为 float
,那么,如果Key是 special
,那么是否有办法实际上专门化该类别
special
,那么数值默认为
我想一种方法就是用特质来做到这一点:
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;
是否有更简洁的方法这样做,而这种方式没有涉及,而且更容易地表明,在界定协会的地方,正常违约是正常违约?