我正在尝试编写一个模板,它将返回AliasSeq
函数的返回类型的AliasSeq
。然而,在我的代码,当我尝试编译它,它告诉我Error: type (...) has no value
从模板返回动态AliasSeq
这是我的代码,我到目前为止有:
template ReturnTypesFromFunctions(Functions...)
{
auto ReturnTypesFromFunctions()
{
alias functions = AliasSeq!();
foreach(fn; Functions)
{
functions = AliasSeq!(functions, ReturnType!fn);
}
return functions;
}
}
基本上我试图做的是自动生成从AliasSeq
阵列这样的:
int a();
bool b();
double c();
alias functions = AliasSeq!(a, b, c);
alias returnTypes = ReturnTypesFromFunctions!functions;
// returnTypes -> AliasSeq [int, bool, double]
但与当前的代码会导致这些错误:
Error: type (int) has no value
Error: type (bool) has no value
Error: type (double) has no value
Error: type() has no value
它可能与auto
有关,因为编译器无法从函数别名中找到类型。然而,没有类型可以代表AliasSeq,因为函数本身用于查找类型,所以我可以在别处使用它。
哦如果无法在使用的foreach我想我还需要重写我的所有其他职能则是无效 – WebFreak001