C スタイルの文字列をテンプレート引数にすることはできますか?
C スタイルの文字列を使用してテンプレートをインスタンス化しようとすると、エラーが発生して失敗します。文字列リテラルをテンプレート引数として使用するのは無効です。
C スタイルの文字列を直接テンプレート引数として使用することはできませんが、代替のアプローチがあります。
文字列へのポインタを使用する定数文字列
回避策の 1 つは、定数文字列へのポインタをテンプレート引数として使用することです。
<code class="c++">template <char const *str> struct X { const char *GetString() const { return str; } }; char global_string[] = "String"; int main() { X<global_string> x; cout << x.GetString(); }</code>
更新: C 11
C 11 以降では、文字パックを利用して文字列リテラルをテンプレート引数として使用できます:以上がC スタイルの文字列を C のテンプレート引数として使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。