dsi*_*cha 22 templates d metaprogramming
你在D编程语言中做过或看过的最酷的有点实用的元编程黑客是什么?有点实际意味着排除例如编译时光线跟踪器.
小智 8
Scrapple工具中的DParse是一个模板化的解析器生成器.但是,ldc是唯一一个具有正常运行的编译时间GC的D编译器(但即便如此,它也有几个奇怪的随机崩溃).我玩了一点,你可以做一些有趣的事情,如配置文件解析和东西,但直到编译时GC完全运行,你不能做大事.
我最喜欢的是来自tools.base的ElemType和KeyType:
template ElemType(T) {
alias typeof((function() {
foreach (elem; Init!(T)) return elem; assert(false);
})()) ElemType;
}
template KeyType(T) {
alias typeof((function() {
foreach (key, elem; Init!(T)) return key; assert(false);
})()) KeyType;
}
Run Code Online (Sandbox Code Playgroud)
我会回答我自己的问题,因为当我问这个时,这个问题不存在.我给垃圾收集器编写了一个补丁,它使用模板和编译时内省来为任意复杂的用户定义类型生成指针偏移信息,以便进行精确的堆扫描,而不是在编译器中完成.
| 归档时间: |
|
| 查看次数: |
2534 次 |
| 最近记录: |