ポインターによって渡される関数の型を取得するために、次のコードを作成しました。
import std.stdio;
import std.traits;
void main()
{
get_param_types(&f1,"f1");
get_param_types(&f2,"f2");
get_param_types(&f3,"f3");
}
void get_param_types(f_t)(f_t f, string f_id){
writeln("get_param_types ");
alias ParameterTypeTuple!(f) ptt;
writeln(f_id, " has ", ptt.length, " parameters");
static if (ptt.length){
write("( ");
foreach (pt; ptt){
write(typeid(pt), " ");
}
writeln(")");
}
}
void f1() { }
void f2(int x) { }
void f3(int x, double y, string z) { }
私の疑問は次のとおりです。1:get_param_types
コンパイル時に完全に評価されますか?
そうでない場合: 2: どうすればこれを達成できますか?
3: 文字列 (例: ) を渡さないようにして、コンパイル時に内部から推測する方法はありますか?"f1"
get_param_types