ホームページ >バックエンド開発 >C++ >C で文字列リテラルをテンプレート引数として渡すにはどうすればよいですか?

C で文字列リテラルをテンプレート引数として渡すにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-29 12:20:10216ブラウズ

How Can I Pass String Literals as Template Arguments in C  ?

文字列をテンプレート引数として渡す

C では、クラス テンプレートを定義するときに、型以外のパラメーターも指定できます。一般的な使用例には、文字列リテラルをパラメーターとして渡すことが含まれます。これを実現する方法は次のとおりです。

文字列リテラルを型以外のテンプレート引数として直接渡すことはできませんが、const char* パラメータを利用し、静的リンケージで const char[] 変数を渡すことができます。 .

#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();
}

ここで、Cts テンプレートには、const char* 型の非型パラメーター str があります。 const char[] 型の静的変数 testStr を定義し、それを引数として Cts に渡します。

このアプローチは、文字列リテラルをテンプレート引数として渡す動作を効果的に模倣し、クラス テンプレートを作成できるようにします。特定の文字列値を操作します。

以上がC で文字列リテラルをテンプレート引数として渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。