Wie kann ich ein Array beliebiger Größe als Vorlagenargument ohne Typ übergeben?C++

Programme in C++. Entwicklerforum
Anonymous
 Wie kann ich ein Array beliebiger Größe als Vorlagenargument ohne Typ übergeben?

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).
Explizit kann ich es so machen:

Code: Select all

#include 

template
void foo() {}

int main() {
foo();
}
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.
-----
Ein 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 eine 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 es nun den BREAK finden und die Größen der beiden Zahlenmengen ableiten muss.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post