0
点赞
收藏
分享

微信扫一扫

d找包中函数


​​原文​​

D包没有​​关闭​​​;谁都可随时​​加​​新模块.

可:

static foreach (sym; __traits(allMembers, mixin("std.string")))
{
pragma(msg, sym.stringof);
}

然后必须检查​​sym​​​是否是​​模板或函数​​或其他.

static foreach (sym; __traits(allMembers, mixin("std.string")))
{
// 注意sym已是串,不必用.stringof
static if (is(typeof(mixin(sym)) == function))
pragma(msg, sym);
}

但请注意,这并不​​抓取​​​模板函数,仅适合​​非模板​​​全局函数.可用​​static if(__traits(isTemplate,mixin(sym)))​​​来​​检测​​​模板,但​​一般​​​无法知道它是否是​​模板函数​​​,因为为了​​自省​​​它,​​必须​​​先实例化它,但是没有​​自动​​​实例化​​模板​​​的通用方法.且参数可受到​​任意签名约束​​​,理论上它可能只是仅用于​​可能参数​​​子集的​​模板函数​​​,因此不好​​自动推导​​​哪些​​模板参数​​​实例化为​​有效函数​​​.只有在已​​实例化​​​了模板函数,才好得到​​模板函数​​.


举报

相关推荐

0 条评论