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)))检测模板,但一般无法知道它是否是模板函数,因为为了自省它,必须先实例化它,但是没有自动实例化模板的通用方法.且参数可受到任意签名约束,理论上它可能只是仅用于可能参数子集的模板函数,因此不好自动推导哪些模板参数实例化为有效函数.只有在已实例化了模板函数,才好得到模板函数.

posted @   zjh6  阅读(14)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示