在 C++ 中,如果我有一个模板参数,我怎样才能干净地专门化一个默认参数?例如,考虑以下情况:
template <class Key, class Value = int > class Association;
如果我想Value
改为默认为float
for classSpecial
怎么办?有没有一种方法可以有效地专门化该类Association
,如果 Key 是Special
Value 默认为而不是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 是定义 Association 的地方的正常默认值?