W języku C++, jeśli mam parametr szablonu, jak mogę wyspecjalizować domyślny argument? Na przykład, należy rozważyć następujące kwestie:Czy argument domyślny parametru szablonu może być wyspecjalizowany?
template <class Key, class Value = int > class Association;
Co jeśli chcę Value
zamiast domyślnie float
dla klasy Special
? Czy istnieje sposób, aby w efekcie specjalizować klasę Association
tak, że jeśli kluczem jest Special
, to wartością domyślną będzie float
?
sobie wyobrazić jeden sposób, aby to zrobić byłoby z cech:
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;
Czy jest bardziej zwięzły sposób w ten sposób, że nie jest tak zaangażowany i byłoby łatwiej wykazać, że int jest normalne domyślne przy miejsce, w którym zdefiniowane jest Stowarzyszenie?
Uważam, że powinien być jakiś sposób, aby osiągnąć to, co chcesz z aliasów szablonów ('using'), ale ja nie mam czasu rozwiązać – sehe