d前向引用问题
alias aliases(a...) = a;
template sort(alias f, a...) {
static if (a.length > 0) {
alias x = f!(a[0]);
alias sort = a;
}
else
alias sort = a;
}
alias SortedItems = sort!(isDependencyOf, String);
enum isDependencyOf(Item) = Item.DirectDependencies.length == 0;
struct String {
alias DirectDependencies = aliases!();
enum l = SortedItems.length; // 无`length`属性
}
怀疑实例化
排序模板时,它太急于
计算它的参数
,它应该只看到String
是个结构
,而未语义化
它的内容.
修复
似乎,第一次"模板排序"
时,它不能设置"alias decl"
,因为这两个"别名排序"
赋值在条件编译
之后隐藏
.
因此'alias decl'
为null
.
因此,在'struct String'
的语义中,它遇见了'SortedItems.length'
.'alias decl'
为null
,所以'SortedItems'
变为'sort!(...)'
,而'sort!(...)'
变为'void'
,而'void'
没有'length'
.
或许可通过注意'static if'
成员是否
是模板中唯一成员
这个事实,这样它就可急切
求值了?
查看扩展成员
,也许可分两趟
完成,一次是顶级条件编译
,然后检查单个成员
,然后再检查
其余.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现