ホームページ  >  記事  >  バックエンド開発  >  文字列リテラルを非型テンプレート引数として渡すことはできますか?

文字列リテラルを非型テンプレート引数として渡すことはできますか?

DDD
DDDオリジナル
2024-11-17 09:04:03154ブラウズ

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

非型テンプレート引数として文字列リテラルを渡す

問題ステートメント:

できますかmy_class<"string">?

解決策:

などの文字列リテラルを受け入れる非型テンプレート パラメーターを使用してクラス テンプレートを定義します。文字列リテラルを型以外のテンプレート パラメーターとして直接渡すことは可能ですが、 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();
}

説明:

このコードでは、テンプレート パラメーター str は文字列リテラルを指すことができる const char* です。または文字列変数。変数 teststr は、文字列リテラル「Hello world!」を含む静的 const char[] として宣言されます。 teststr をテンプレート引数として渡すことで、クラス テンプレート内の文字列リテラルに効果的にアクセスできます。

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

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