質問:
文字列リテラルは、クラス テンプレートへの非型引数 (次のような宣言内) 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 を使用してクラス テンプレート cts を宣言します。文字ポインタ。静的リンケージで定義された変数 teststr は文字列リテラルを保持し、テンプレートのインスタンス化に渡されます。
このメソッドは、文字列リテラルを型以外のテンプレート引数として直接渡すことの実行可能な代替手段です。
以上が文字列リテラルを非型テンプレート引数として渡すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。