В 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
), но у меня нет времени разбираться с этим. - person sehe   schedule 25.05.2012