Wie kann ich ein std::integer_sequence
als Template-Parameter an eine Meta-Funktion übergeben (d. h. keine Funktionsvorlage)?
Gegeben z. der folgende Anwendungsfall (aber nicht darauf beschränkt):
Ich möchte eine Integer-Sequenz verwenden, um die letzten N
-Typen aus einem Parameter-Pack zu entfernen. Ich dachte, ich könnte selector
von diese SO-Frage verwenden, aber ich versäumte es, die Integer-Sequenz an diese Meta-Funktion zu übergeben.
Compiler Fehler
%Vor%Wie würde ich die Integer-Sequenz übergeben?
Sie müssen selector
(teilweise) spezialisieren, damit die Indizes aus std::index_sequence
abgeleitet werden:
Für einen einfachen Anwendungsfall können Sie die Metafunktion auch als Funktionsvorlage schreiben.
%Vor% Übrigens ist die tuple_element
Implementierung von selector
im Allgemeinen recht ineffizient, da die Anzahl der erforderlichen rekursiven Template Instanziierungen quadratisch ist. Diese Antwort zeigt eine Möglichkeit, die Anzahl der erforderlichen Template-Instanziierungen linear in der Anzahl der Typen in der Liste zu machen.