Heim > Backend-Entwicklung > C++ > Hauptteil

Können String-Literale als Nichttyp-Vorlagenargumente übergeben werden?

Barbara Streisand
Freigeben: 2024-11-20 01:27:03
Original
830 Leute haben es durchsucht

Can String Literals be Passed as Non-Type Template Arguments?

Übergabe von String-Literalen an Nicht-Typ-Klassenvorlagenparameter

Frage:

Kann ein String-Literal als übergeben werden? Nicht-Typ-Argument für eine Klassenvorlage, z. B. in einer Deklaration wie my_class<"string">?

Antwort:

Beim direkten Übergeben von String-Literalen als nicht -Typ-Vorlagenargumente sind nicht möglich, es gibt eine Lösung, die dem sehr nahe kommt.

Sie können einen nicht typisierten Vorlagenparameter vom Typ const char* verwenden und ihm eine const char[]-Variable mit statischer Verknüpfung übergeben. Dieser Ansatz weist Ähnlichkeiten mit der direkten Übergabe von Zeichenfolgenliteralen auf.

Hier ist ein kompilierbares Beispiel:

#include <iostream>

template<const char *str>
struct cts {
    void p() { std::cout << str; }
};

static const char teststr[] = "Hello world!";

int main() {
    cts<teststr> o;
    o.p();
}
Nach dem Login kopieren

Der obige Code deklariert eine Klassenvorlage cts mit einem nicht typspezifischen Vorlagenparameter str, der eine Konstante annimmt Zeichenzeiger. Die mit statischer Verknüpfung definierte Variable teststr enthält das Zeichenfolgenliteral und wird an die Vorlageninstanziierung übergeben.

Diese Methode ist eine praktikable Alternative zur direkten Übergabe von Zeichenfolgenliteralen als Nichttyp-Vorlagenargumente.

Das obige ist der detaillierte Inhalt vonKönnen String-Literale als Nichttyp-Vorlagenargumente übergeben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage