Iteriere über Vorlagenklassen in C ++ 11

8

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.

    
htzfun 25.03.2014, 17:30
quelle

3 Antworten

5

Wenn Sie nicht auf integer_sequence mit c ++ 14 vertrauen möchten, ist dies eine einfachere Lösung :

%Vor%

EDIT: über Ihre Frage aktualisieren, können Sie tun, wenn Sie die Objekte in einem Tupel speichern, finden Sie hier :

%Vor%     
galop1n 25.03.2014, 17:49
quelle
10

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%     
jrok 25.03.2014 17:38
quelle
2

Sie würden die Template-Spezialisierung verwenden:

%Vor%     
Kerrek SB 25.03.2014 17:38
quelle

Tags und Links