Wie übergebe ich ein Array beliebiger Größe als Vorlagen-Nichttyp-Argument?C++

Programme in C++. Entwicklerforum
Anonymous
 Wie übergebe ich ein Array beliebiger Größe als Vorlagen-Nichttyp-Argument?

Post by Anonymous »

Ich möchte eine Vorlagenfunktion erstellen, die ein std::array als nicht typisiertes template-Argument für jedes N verwendet (das ist seit C++20 möglich).
Ausdrücklich kann ich es so machen:

Code: Select all

#include 

template
void foo() {}

int main() {
foo();
}
Meine Frage ist: Kann ich N irgendwie ableiten? Zum Beispiel so etwas:

Code: Select all

#include 

template
void bar() {}

int main() {
bar();
}
Das Obige kann nicht kompiliert werden, da N verwendet wird, bevor es deklariert wird.
-----
Etwas breiterer Kontext: Ich möchte eigentlich eine Vorlage, die zwei solcher Arrays enthält, damit ich sie so nennen kann:

Code: Select all

foo()
Die Aufteilung in zwei Zahlengruppen ist von Bedeutung. Ich könnte wahrscheinlich einen speziellen Unterbrechungswert definieren und einfach die variadic-Vorlage verwenden:

Code: Select all

constexpr int BREAK = -1;
foo()
aber das sieht nach einem hässlichen Hack aus. Ganz zu schweigen von der zusätzlichen Komplexität in der foo-Implementierung, wo nun der BREAK gefunden und die Größen der beiden Zahlenmengen abgeleitet werden müssen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post