Bei einer VorlageSpezialisieren Vorlage basiert auf Positivität Argumentations
template <int n>
void f(){...};
Ich weiß, dass ich es für bestimmte Werte von n
, indem Sie spezialisieren können:
template <>
void f<2>(){...};
Aber gibt es ein Verfahren, das mir erlaubt, es für alle positiven n
zu spezialisieren?
Ich dachte an die folgende
template <int n>
void f<n>(){
int dummy[n]; //invalid for n < 0
...
};
Also für n<0
tut dieser Code ungültig ist und der Compiler auf die vorherige Definition zurückgreifen würde. Leider bekomme ich nur einen redefinition of 'void f<n>()'
Fehler.
Hinweis: Ich schätze, das wird wahrscheinlich nicht vom Standard unterstützt. Ich frage, ob es eine Methode (vielleicht einige Template-Metaprogrammierung) gibt, um diesen Effekt zu erzielen.
Matter of Style, aber ich bevorzuge die 'enable_if' auf den Rückgabetyp, so gibt es keinen magischen Parameter um verwirrende Dinge (Benutzer und der Typ der Funktion). – GManNickG