C++ では、テンプレート パラメーターがある場合、既定の引数を明確に特殊化するにはどうすればよいですか? たとえば、次のことを考慮してください。
template <class Key, class Value = int > class Association;
Value
代わりにfloat
for classをデフォルトにしたい場合はどうすればよいSpecial
ですか? Association
Key がSpecial
その Value のデフォルトの代わりに になるようにクラスを効果的に特殊化する方法はありますfloat
か?
これを行う1つの方法は、特性を使用することだと思います:
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;
それほど複雑ではなく、Association が定義されている場所で int が通常のデフォルトであることをより簡単に示す、より簡潔な方法はありますか?