Heim > Backend-Entwicklung > C++ > Können Sie String-Literale als Nichttyp-Vorlagenargumente übergeben?

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

DDD
Freigeben: 2024-11-17 09:04:03
Original
224 Leute haben es durchsucht

Can You Pass String Literals as Non-Type Template Arguments?

Übergabe von String-Literalen als Nichttyp-Vorlagenargumente

Problemstellung:

Können Sie? Definieren Sie eine Klassenvorlage mit einem nicht typspezifischen Vorlagenparameter, der ein Zeichenfolgenliteral akzeptiert, z. B. my_class<"string">?

Lösung:

Obwohl dies nicht der Fall ist Wenn es möglich ist, ein String-Literal direkt als nicht typspezifischen Vorlagenparameter zu übergeben, können Sie einen ähnlichen Effekt erzielen, indem Sie einen const char*-Parameter deklarieren und ihm eine const char[]-Variable mit statischer Verknüpfung übergeben.

Beispielcode:

#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

Erklärung:

In diesem Code ist der Vorlagenparameter str ein const char*, der auf ein String-Literal verweisen kann oder eine String-Variable. Die Variable teststr wird als statisches const char[] mit dem String-Literal „Hello world!“ deklariert. Durch die Übergabe von teststr als Vorlagenargument können Sie innerhalb der Klassenvorlage effektiv auf das Zeichenfolgenliteral zugreifen.

Das obige ist der detaillierte Inhalt vonKönnen Sie String-Literale als Nichttyp-Vorlagenargumente übergeben?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage