In C++, wenn ich ein Template-Parameter haben, wie kann ich spezialisieren sauber ein Standardargument? Betrachten wir zum Beispiel die folgenden:kann einen Standard-Argument des Template-Parameter spezialisiert sein?
template <class Key, class Value = int > class Association;
Was passiert, wenn ich will Value
stattdessen auf float
für Klasse Standard Special
? Gibt es eine Möglichkeit, in der Tat ist spezialisiert die Klasse Association
so dass, wenn Key Special
dieser Wert standardmäßig anstelle float
sein?
Ich stelle mir eine Möglichkeit, dies mit Merkmalen zu tun wäre:
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;
Gibt es eine prägnante Art und Weise, dies zu tun, die nicht so involviert ist, und würde mehr leicht zu erkennen, dass int der normale Standard bei der ist Ort wo Association definiert ist?
Ich glaube, dass es einen Weg geben, sollte zu erreichen, was Sie mit Vorlage Aliase wollen ('using'), aber ich habe keine Zeit, um finde es heraus – sehe