Einfache Schleifen mit Templates funktionieren mittels Rekursionen. Das ist auf
dem ersten Blick etwas ungewöhnlich, aber letzendlich doch nur eine Schleife.
Wir muessen die Anzahl an Iterationen aber zur Compilezeit vorgeben! Entweder
per Template Parameter oder constexpr.
Normal würde man Parameterlisten packen/unpacken oder was man sonst in einer Schleife macht.
Ich möchte aber N mal eine Funktion mit einem laufenden Template Parameter i erstellen.
Erstens kann ich so meine Funktion für ein festes N specialisieren, zweitens kann man
die spezielle Funktion zur Laufzeit auswählen.
#include <iostream>
#include <array>
template<int N>
void funcToImpl(int n) {
std::cout << "template N: " << N << " runtime n: " << n < fixedLengthArray;
}
template<int i>
void func(int n) {
if(i == n) {
funcToImpl(n);
} else {
func<i-1>(n);
}
}
// rekursionsanker bei i=0
template<>
void func<0>(int n) {
funcToImpl<0>(n);
}
int main(int argc) {
// rekursion faengt bei i=80 an
func<80>(argc);
}