D言語 Part29
レス数が900を超えています。1000を超えると表示できなくなるよ。
0942デフォルトの名無しさん
2012/07/29(日) 03:01:02.59void function() fp;
こう書いたときfpの型は「関数ポインタ型」になるが、is式内では==functionが
「関数型かどうか」の判定になる点だと思う。
関数funcがあるとき
typeof(func)で取れるのが関数型、is(...==function)で真になる
&funcという式から取れるのが
1.関数ポインタ
auto fp = &func;
static if (is(typeof(fp) FP : F*, F)) {
// typeof(fp)を名前FPに割り当て、そこからFを切り出す
static assert(is(F == function)); // Fは関数型
pragma(msg, F); // "void()"と表示される
}
2.デリゲート
auto dg = &obj.func;
static if (is(typeof(dg) DG == delegate)) {
// ==delegateはデリゲート型かどうかを判定する
// デリゲート型DGから関数型を取るにはstd.traits.FunctionTypeOfを使う
}
レス数が900を超えています。1000を超えると表示できなくなるよ。