Angenommen, ich habe eine Klasse mit einer solchen Definition:
%Vor%Die Frage ist, wie man mit N? über diese Klassen iteriert.
%Vor%Vielleicht gibt es eine neue Funktion in C ++ 11 oder eine coole Verwendung von contrexp .
Und nächste Frage ist: wenn es möglich ist - wie man solche Klassen speichert?
Aktualisieren Ich weiß, dass es zur Kompilierzeit funktioniert. Angenommen, ich habe bis zu 10 solcher globalen Klassen, die sich nur in N unterscheiden. Zum Beispiel:
%Vor%Und angenommen, ich sollte denjenigen anrufen, der N größer als mein Wert hat. Wenn es keine Chance gibt, iterieren zu können, muss ich eine lange If-Else-Struktur schreiben.
%Vor%Hoffe, das Problem wurde klarer. Als ich gegoogelt habe, ist das unmöglich und ich verstehe warum. Hofft nur auf C ++ 11 und SO Community. Danke.
Es ist offensichtlich unmöglich mit einer for-Schleife, da diese zur Laufzeit ausgeführt wird und Template-Argumente Kompilierzeitkonstanten sein müssen. Hier ist, wie Sie es tun könnten.
Dies sind Dienstprogrammklassen zum Erstellen einer Folge von ganzen Zahlen als Vorlagenargumentpaket:
%Vor%Die funktionierende Funktion:
%Vor%Und Sie rufen die Funktion so auf:
%Vor%