int
テンプレートに渡された変数の型を判別し、それがor かどうかに基づいて関数を呼び出す方法はありstd::string
ますか?
例えば
template <class T>
struct Jam
{
Jam(T *var)
{
if (typeid(var) == typeid(std::string*)
*var = "Hello!";
else if (typeid(var) == typeid(int*)
*var = 25;
}
};
そのコードを使用しようとすると、エラーが発生しますinvalid conversion from const char* to int
。これは、コンパイラがテンプレートを個別の関数に「展開」し、構造の新しいインスタンスを指定したときにthrow Jam<std::string>(&setme);
、ステートメントを検出var* = 25
してコンパイルを拒否したためだと思われます。
これを行う適切な方法はありますか?たぶんマクロガード付き?ありがとう。