Dlang:如何在模板函数上强制执行接口
Dlang : how to enforce an interface on a template function
我已经在谷歌上搜索了两个小时,但没有成功。
如果我有一个模板函数并且我想在模板类型上强制执行一个接口,我该怎么做?
例如。
void doStuff(T)(bool param) /*if T is a Throwable*/ {
// do stuff...
}
您可以使用模板约束来做到这一点:
void doStuff(T)(bool param) if(is(T : Throwable)) { }
is
表达式可能非常复杂,所以我建议通读 this.
另一种方法,而不是像 mitch_ 的回答那样使用 is
关键字。
void doStuff(T : Throwable)(bool param) { }
参见:https://dlang.org/spec/template.html#TemplateTypeParameterSpecialization
我已经在谷歌上搜索了两个小时,但没有成功。
如果我有一个模板函数并且我想在模板类型上强制执行一个接口,我该怎么做?
例如。
void doStuff(T)(bool param) /*if T is a Throwable*/ {
// do stuff...
}
您可以使用模板约束来做到这一点:
void doStuff(T)(bool param) if(is(T : Throwable)) { }
is
表达式可能非常复杂,所以我建议通读 this.
另一种方法,而不是像 mitch_ 的回答那样使用 is
关键字。
void doStuff(T : Throwable)(bool param) { }
参见:https://dlang.org/spec/template.html#TemplateTypeParameterSpecialization