Gibt es eine Möglichkeit, durch Vorlagenfunktionen/Klasseninstanzen mit Non-Typ-Template-Parameter über std :: iota zu i
Posted: 09 Feb 2025, 09:14
Wenn ich Instanzen einer Funktionsvorlage aufrufen wollte, in der die Vorlagenargumente sequentielle ganze Zahlen sind, kenne ich eine Schleife wie die folgende nicht: < /p> template
void foo() {/*...*/}
for (int i = 0; i < 4; ++i)
foo();
< /code>
und gleiche mit Klassen. Aber ich habe niemanden gesehen, der versucht hat, "std :: iota" zu verwenden, und es ist contexpr, da C ++ 20 . 2024 Standard sagt:
13.4.3 Vorlage Non-Typ-Argumente [temp.arg.nontype]
< BR /> Ein Template-Argument für einen Nicht-Typ-Vorlagenparameter muss ein konstanter Ausdruck (7.7) des Typs des Template-Parameters sein. < /p>
< /blockquote>
und ich konnten diesen 7.7 -Teil nicht wirklich verstehen. ). Vielleicht könnte so etwas wie das Iterieren durch den Vektor der benötigten Indizes mit IoTA funktionieren.
void foo() {/*...*/}
for (int i = 0; i < 4; ++i)
foo();
< /code>
und gleiche mit Klassen. Aber ich habe niemanden gesehen, der versucht hat, "std :: iota" zu verwenden, und es ist contexpr, da C ++ 20 . 2024 Standard sagt:
13.4.3 Vorlage Non-Typ-Argumente [temp.arg.nontype]
< BR /> Ein Template-Argument für einen Nicht-Typ-Vorlagenparameter muss ein konstanter Ausdruck (7.7) des Typs des Template-Parameters sein. < /p>
< /blockquote>
und ich konnten diesen 7.7 -Teil nicht wirklich verstehen. ). Vielleicht könnte so etwas wie das Iterieren durch den Vektor der benötigten Indizes mit IoTA funktionieren.