テンプレートに文字列を渡してみる。
テンプレートパラメータに指定できるもの - Faith and Brave - C++で遊ぼう
にある通り、テンプレートにはポインタが渡せると言う事で、
以下の様に文字列等を渡してみる。
#include <iostream> // 文字列 (char*) char hoge[] = "hoge"; static char fuga[] = "fuga"; const char piyo[] = "piyo"; // 関数テンプレート template <char* String> //<const char* String> にしてもPrint<hoge>以外はダメ。 void Print() { std::cout << String << std::endl; } // main関数 int main() { Print<hoge>(); // OK. 非constのグローバル変数のポインタは渡せる //Print<fuga>(); // NG. 非constでもstatic変数のポインタは渡せない //Print<piyo>(); // NG. constにするとグローバル変数でも渡せない //Print<"moke">(); // NG. 文字列リテラルも渡せない。 return 0; }
こんな感じ。
非constのグローバル変数のみ渡せる。
C++のテンプレート引数に文字列を使う方法・・・無理やりです - Decremented Blog
こちらにも渡す方法が・・・でもコレは確かに無理やり(^^;
米欄に同じやり方が載ってますね。問題もある様ですが・・・。
文字列リテラルぐらい渡せて欲しいなあ。