Dies ist definitiv eine triviale Frage, aber ich konnte nicht herausfinden, wie dies zu tun ist.Führen Sie verschiedene Funktionen in Abhängigkeit von Template Parameter Dissequation
Ich habe eine Template-Funktion, sagen template <unsigned int N> void my_function()
. Nun, ich habe zwei verschiedene Implementierungen für my_function
, die erste sollte verwendet werden, wenn N
größer ist als, sagen wir 100, die andere, wenn N
ist kleiner als das.
Ich versuchte SFINAE wie folgt zu verwenden:
template <unsigned int N, typename = enable_if <N >= 100> :: type> my_function()
{
// First implementation
}
template <unsigned int N, typename = enable_if <N < 100> :: type> my_function()
{
// Second implementation
}
Aber das ist die gleiche Funktion zweimal erklären. Dann versuchte ich etwas wie
template <unsigned int N, bool = (N >= 100)> my_function();
Und dann die beiden Funktionen mit den zwei verschiedenen Werten der boolean implementieren. Kein Erfolg, da es sich um eine Teilspezialisierung handelt.
Dann habe ich versucht, N
als Strukturparameter und die bool in den Funktionsaufruf zu wickeln, aber es ist eine Member-Funktion spezialisiert vor der Spezialisierung der Klasse, die nicht getan werden kann.
Gibt es einen vernünftigen Weg, dies zu tun?
Ich mag das! Ich werde es nächstes Mal benutzen, danke! –